|
Users |
| ✅ | GET /users | 200 | 200 OK |
| | {
"data": [
]
} | {
"data": [
]
} |
| ✅ | POST /users | 201 | 201 Created |
| {
"data": {
"type": "users",
"id": "test@test.com",
"attributes": {
"name": "Test User"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} |
| ✅ | POST /users | 201 | 201 Created |
| {
"data": {
"type": "users",
"id": "other@mail.com",
"attributes": {
"name": "Tester de User"
}
}
} | {
"data": {
"type": "users",
"id": "other@mail.com",
"links": {
"self": "https://silo-dev.pod.blue/users/other@mail.com"
},
"attributes": {
"name": "Tester de User"
}
}
} | {
"data": {
"type": "users",
"id": "other@mail.com",
"links": {
"self": "https://silo-dev.pod.blue/users/other@mail.com"
},
"attributes": {
"name": "Tester de User"
}
}
} |
| ✅ | GET /users/test@test.com | 200 | 200 OK |
| | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} |
| ✅ | GET /users/me | 200 | 200 OK |
| | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} |
| ✅ | GET /users/me | 200 | 200 OK |
| | {
"data": {
"type": "users",
"id": "other@mail.com",
"links": {
"self": "https://silo-dev.pod.blue/users/other@mail.com"
},
"attributes": {
"name": "Tester de User"
}
}
} | {
"data": {
"type": "users",
"id": "other@mail.com",
"links": {
"self": "https://silo-dev.pod.blue/users/other@mail.com"
},
"attributes": {
"name": "Tester de User"
}
}
} |
| ✅ | PATCH /users/test@test.com | 200 | 200 OK |
| {
"data": {
"type": "users",
"id": "test@test.com",
"attributes": {
"location": "Utrecht"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User",
"location": "Utrecht"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User",
"location": "Utrecht"
}
}
} |
| ✅ | PATCH /users/me | 200 | 200 OK |
| {
"data": {
"type": "users",
"id": "me",
"attributes": {
"location": null
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
}
}
} |
Items |
| ✅ | GET /items | 200 | 200 OK |
| | {
"data": [
]
} | {
"data": [
]
} |
| ✅ | POST /items | 201 | 201 Created |
| {
"data": {
"type": "items",
"id": "--test-item--",
"attributes": {
"title": "Test Item",
"description": "My first test item!"
}
}
} | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} |
| ✅ | GET /items | 200 | 200 OK |
| | {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
]
} | {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
]
} |
| ✅ | GET /items/mine | 200 | 200 OK |
| | {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
]
} | {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
]
} |
| ✅ | GET /items/--test-item-- | 200 | 200 OK |
| | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} |
| ✅ | PATCH /items/--test-item-- | 200 | 200 OK |
| {
"data": {
"type": "items",
"id": "--test-item--",
"attributes": {
"category": "The Best Test in Town"
}
}
} | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!",
"category": "The Best Test in Town"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!",
"category": "The Best Test in Town"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} |
| ✅ | GET /users/test@test.com | 200 | 200 OK |
| | | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
},
"relationships": {
"root-items": {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!",
"category": "The Best Test in Town"
}
}
]
}
}
}
} |
| ✅ | GET /users/me | 200 | 200 OK |
| | | {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
},
"attributes": {
"name": "Test User"
},
"relationships": {
"root-items": {
"data": [
{
"type": "items",
"id": "--test-item--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item--"
},
"attributes": {
"title": "Test Item",
"description": "My first test item!",
"category": "The Best Test in Town"
}
}
]
}
}
}
} |
| ✅ | DELETE /items/--test-item-- | 204 | 204 No Content |
| | | |
Containing items and juggling |
| ✅ | POST /items | 201 | 201 Created |
| {
"data": {
"type": "items",
"id": "--test-item-parent--",
"attributes": {
"title": "Parent Item"
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
},
"attributes": {
"title": "Parent Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
},
"attributes": {
"title": "Parent Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} |
| ✅ | POST /items | 201 | 201 Created |
| {
"data": {
"type": "items",
"id": "--test-item-child--",
"attributes": {
"title": "Child Item"
},
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} |
| ✅ | GET /items/--test-item-parent-- | 200 | 200 OK |
| | | {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
},
"attributes": {
"title": "Parent Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"children": {
"data": [
{
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
}
}
]
}
}
}
} |
| ✅ | POST /items | 201 | 201 Created |
| {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
}
}
}
}
}
} |
| ✅ | GET /items/mine | 200 | 200 OK |
| | | {
"data": [
{
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
},
"attributes": {
"title": "Parent Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
},
{
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
},
{
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
}
}
}
}
}
]
} |
| ✅ | PATCH /items/--test-item-grandchild-- | 200 | 200 OK |
| {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} |
| ✅ | PATCH /items/--test-item-grandchild-- | 200 | 200 OK |
| {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": ""
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
}
}
}
} |
| ✅ | PATCH /items/--test-item-child-- | 200 | 200 OK |
| {
"data": {
"type": "items",
"id": "--test-item-child--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
}
}
}
}
}
} |
| ✅ | PATCH /items/--test-item-grandchild-- | 200 | 200 OK |
| {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
},
"children": {
"data": [
{
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
}
}
]
}
}
}
} | {
"data": {
"type": "items",
"id": "--test-item-grandchild--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
},
"attributes": {
"title": "Grandchild Item"
},
"relationships": {
"owner": {
"data": {
"type": "users",
"id": "test@test.com",
"links": {
"self": "https://silo-dev.pod.blue/users/test@test.com"
}
}
},
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-parent--"
}
}
},
"children": {
"data": [
{
"type": "items",
"id": "--test-item-child--",
"links": {
"self": "https://silo-dev.pod.blue/items/--test-item-child--"
},
"attributes": {
"title": "Child Item"
}
}
]
}
}
}
} |
Error checks: /foo |
| ✅ | GET /foo | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "SiloAPI error: Entity type `foo` does not exist"
}
} |
| ✅ | POST /foo | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "SiloAPI error: Entity type `foo` does not exist"
}
} |
| ✅ | PATCH /foo | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "SiloAPI error: Entity type `foo` does not exist"
}
} |
| ✅ | DELETE /foo | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "SiloAPI error: Entity type `foo` does not exist"
}
} |
| ✅ | OPTIONS /foo | 200 | 200 OK |
| | | |
| ✅ | PUT /foo | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "JSON:API error: Method `PUT` not allowed"
}
} |
| ✅ | FAKE /foo | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "JSON:API error: Method `FAKE` not allowed"
}
} |
Error checks: /users |
| ✅ | POST /users | 400 | 400 Bad Request |
| | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: JSON parse error - Syntax error"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"unknown": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Root member `data` is required"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: `data` must be an array"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": [
]
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `type` is required"
}
} |
| ✅ | POST /users | 409 | 409 Conflict |
| {
"data": {
"type": "wrong_type"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource type `wrong_type` is not the type `users` that constitute the collection represented by this endpoint"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": {
"type": "users"
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` is required"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": {
"type": "users",
"attributes": null
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` cannot be empty"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": {
"type": "users",
"attributes": [
]
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` cannot be empty"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": {
"type": "users",
"attributes": {
"name": "Test User"
}
}
} | | {
"errors": {
"status": "400",
"title": "RestAPI error: Data member `id` is required"
}
} |
| ✅ | POST /users | 400 | 400 Bad Request |
| {
"data": {
"type": "users",
"id": "other@mail.com",
"attributes": {
"name": "Test User"
}
}
} | | {
"errors": {
"status": "400",
"title": "RestAPI error: Authorization header should contain Basic HTTP Authentication credentials"
}
} |
| ✅ | POST /users | 409 | 409 Conflict |
| {
"data": {
"type": "users",
"id": "other@mail.com",
"attributes": {
"name": "Test User"
}
}
} | | {
"errors": {
"status": "409",
"title": "RestAPI error: The resource object's `id` does not match the credentials supplied in the Basic Authentication header"
}
} |
| ✅ | PATCH /users | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `PATCH` not allowed on this endpoint"
}
} |
| ✅ | DELETE /users | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `DELETE` not allowed on this endpoint"
}
} |
Error checks: /users/me |
| ✅ | GET /users/me | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | POST /users/me | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `POST` not allowed on this endpoint"
}
} |
| ✅ | PATCH /users/me | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | PATCH /users/me | 400 | 400 Bad Request |
| | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: JSON parse error - Syntax error"
}
} |
| ✅ | PATCH /users/me | 400 | 400 Bad Request |
| {
"unknown": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Root member `data` is required"
}
} |
| ✅ | PATCH /users/me | 400 | 400 Bad Request |
| {
"data": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: `data` must be an array"
}
} |
| ✅ | PATCH /users/me | 400 | 400 Bad Request |
| {
"data": [
]
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `type` is required"
}
} |
| ✅ | PATCH /users/me | 409 | 409 Conflict |
| {
"data": {
"type": "wrong_type"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource type `wrong_type` is not the type `users` that constitute the collection represented by this endpoint"
}
} |
| ✅ | PATCH /users/me | 400 | 400 Bad Request |
| {
"data": {
"type": "users"
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `id` is required"
}
} |
| ✅ | PATCH /users/me | 409 | 409 Conflict |
| {
"data": {
"type": "users",
"id": "other@mail.com"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource object's `id` does not match this endpoint"
}
} |
| ✅ | DELETE /users/me | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
Error checks: /users/--id-- |
| ✅ | GET /users/test | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "RestAPI error: No item found from entity `users` with id `test`"
}
} |
| ✅ | POST /users/test@test.com | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `POST` not allowed on this endpoint"
}
} |
| ✅ | PATCH /users/test@test.com | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | PATCH /users/test@test.com | 403 | 403 Forbidden |
| | | {
"errors": {
"status": "403",
"title": "RestAPI error: This is not you"
}
} |
| ✅ | PATCH /users/test@test.com | 400 | 400 Bad Request |
| | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: JSON parse error - Syntax error"
}
} |
| ✅ | PATCH /users/test@test.com | 400 | 400 Bad Request |
| {
"unknown": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Root member `data` is required"
}
} |
| ✅ | PATCH /users/test@test.com | 400 | 400 Bad Request |
| {
"data": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: `data` must be an array"
}
} |
| ✅ | PATCH /users/test@test.com | 400 | 400 Bad Request |
| {
"data": [
]
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `type` is required"
}
} |
| ✅ | PATCH /users/test@test.com | 409 | 409 Conflict |
| {
"data": {
"type": "wrong_type"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource type `wrong_type` is not the type `users` that constitute the collection represented by this endpoint"
}
} |
| ✅ | PATCH /users/test@test.com | 400 | 400 Bad Request |
| {
"data": {
"type": "users"
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `id` is required"
}
} |
| ✅ | PATCH /users/test@test.com | 409 | 409 Conflict |
| {
"data": {
"type": "users",
"id": "other@mail.com"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource object's `id` does not match this endpoint"
}
} |
| ✅ | PATCH /users/test@test.com | 403 | 403 Forbidden |
| {
"data": {
"type": "users",
"id": "test@test.com"
}
} | | {
"errors": {
"status": "403",
"title": "RestAPI error: This is not you"
}
} |
| ✅ | DELETE /users/test@test.com | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | DELETE /users/test@test.com | 403 | 403 Forbidden |
| | | {
"errors": {
"status": "403",
"title": "RestAPI error: This is not you"
}
} |
Error checks: /items |
| ✅ | POST /items | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: JSON parse error - Syntax error"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"unknwon": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Root member `data` is required"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"data": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: `data` must be an array"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"data": [
]
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `type` is required"
}
} |
| ✅ | POST /items | 409 | 409 Conflict |
| {
"data": {
"type": "wrong_type"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource type `wrong_type` is not the type `items` that constitute the collection represented by this endpoint"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"data": {
"type": "items"
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` is required"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"data": {
"type": "items",
"attributes": null
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` cannot be empty"
}
} |
| ✅ | POST /items | 400 | 400 Bad Request |
| {
"data": {
"type": "items",
"attributes": [
]
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `attributes` cannot be empty"
}
} |
| ✅ | PATCH /items | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `PATCH` not allowed on this endpoint"
}
} |
| ✅ | DELETE /items | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `DELETE` not allowed on this endpoint"
}
} |
Error checks: /items/mine |
| ✅ | GET /items/mine | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | POST /items/mine | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `POST` not allowed on this endpoint"
}
} |
| ✅ | PATCH /items/mine | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `PATCH` not allowed on this endpoint"
}
} |
| ✅ | DELETE /items/mine | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `DELETE` not allowed on this endpoint"
}
} |
Error checks: /items/--id-- |
| ✅ | GET /items/test | 404 | 404 Not Found |
| | | {
"errors": {
"status": "404",
"title": "RestAPI error: No item found from entity `items` with id `test`"
}
} |
| ✅ | POST /items/--test-item-parent-- | 405 | 405 Method Not Allowed |
| | | {
"errors": {
"status": "405",
"title": "RestAPI error: Method `POST` not allowed on this endpoint"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 403 | 403 Forbidden |
| | | {
"errors": {
"status": "403",
"title": "RestAPI error: You are not the owner"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 400 | 400 Bad Request |
| | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: JSON parse error - Syntax error"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 400 | 400 Bad Request |
| {
"unknown": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Root member `data` is required"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 400 | 400 Bad Request |
| {
"data": null
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: `data` must be an array"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 400 | 400 Bad Request |
| {
"data": [
]
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `type` is required"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 409 | 409 Conflict |
| {
"data": {
"type": "wrong_type"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource type `wrong_type` is not the type `items` that constitute the collection represented by this endpoint"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 400 | 400 Bad Request |
| {
"data": {
"type": "items"
}
} | | {
"errors": {
"status": "400",
"title": "JSON:API Request error: Data member `id` is required"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 409 | 409 Conflict |
| {
"data": {
"type": "items",
"id": "--test-item-child--"
}
} | | {
"errors": {
"status": "409",
"title": "JSON:API Request error: The resource object's `id` does not match this endpoint"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 409 | 409 Conflict |
| {
"data": {
"type": "items",
"id": "--test-item-parent--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--fake-id--"
}
}
}
}
} | | {
"errors": {
"status": "409",
"title": "RestAPI error: Parent with id `--fake-id--` does not exist"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 409 | 409 Conflict |
| {
"data": {
"type": "items",
"id": "--test-item-parent--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-parent--"
}
}
}
}
} | | {
"errors": {
"status": "409",
"title": "RestAPI error: Item cannot be it's own parent"
}
} |
| ✅ | PATCH /items/--test-item-parent-- | 409 | 409 Conflict |
| {
"data": {
"type": "items",
"id": "--test-item-parent--",
"relationships": {
"parent": {
"data": {
"type": "items",
"id": "--test-item-child--"
}
}
}
}
} | | {
"errors": {
"status": "409",
"title": "RestAPI error: Circular reference, The new parent is a child of current item"
}
} |
| ✅ | DELETE /items/--test-item-child-- | 401 | 401 Unauthorized |
| | | {
"errors": {
"status": "401",
"title": "RestAPI error: Authentication needed"
}
} |
| ✅ | DELETE /items/--test-item-child-- | 403 | 403 Forbidden |
| | | {
"errors": {
"status": "403",
"title": "RestAPI error: You are not the owner"
}
} |
Error checks: Deletes of non-empties |
| ✅ | DELETE /users/test@test.com | 409 | 409 Conflict |
| | | {
"errors": {
"status": "409",
"title": "RestAPI error: User owns items"
}
} |
| ✅ | DELETE /items/--test-item-parent-- | 409 | 409 Conflict |
| | | {
"errors": {
"status": "409",
"title": "RestAPI error: Item contains children"
}
} |
Clean up! |
| ✅ | DELETE /items/--test-item-child-- | 204 | 204 No Content |
| | | |
| ✅ | DELETE /items/--test-item-grandchild-- | 204 | 204 No Content |
| | | |
| ✅ | DELETE /items/--test-item-parent-- | 204 | 204 No Content |
| | | |
| ✅ | DELETE /users/test@test.com | 204 | 204 No Content |
| | | |
| ✅ | DELETE /users/me | 204 | 204 No Content |
| | | |