SILO API Unit test - Server: https://silo-dev.pod.blue

Users

GET /users
200
200 OK
{
  "data": [
  ]
}
{
  "data": [
    {
      "type": "users",
      "id": "test@test.com",
      "links": {
        "self": "https://silo-dev.pod.blue/users/test@test.com"
      },
      "attributes": {
        "name": "Test User"
      }
    },
    {
      "type": "users",
      "id": "other@mail.com",
      "links": {
        "self": "https://silo-dev.pod.blue/users/other@mail.com"
      },
      "attributes": {
        "name": "Tester de User"
      }
    }
  ]
}
POST /users
201
409 Conflict
{
  "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"
    }
  }
}
{
  "errors": {
    "status": "409",
    "title": "RestAPI error: Client-generated `id` already exists"
  }
}
POST /users
201
409 Conflict
{
  "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"
    }
  }
}
{
  "errors": {
    "status": "409",
    "title": "RestAPI error: Client-generated `id` already exists"
  }
}
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"
    },
    "relationships": {
      "root-items": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          }
        ]
      }
    }
  }
}
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"
    },
    "relationships": {
      "root-items": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          }
        ]
      }
    }
  }
}
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"
    },
    "relationships": {
      "root-items": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          }
        ]
      }
    }
  }
}
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"
    },
    "relationships": {
      "root-items": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          }
        ]
      }
    }
  }
}

Items

GET /items
200
200 OK
{
  "data": [
  ]
}
{
  "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-grandchild--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
            }
          }
        }
      }
    },
    {
      "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--"
            }
          }
        }
      }
    }
  ]
}
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-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-grandchild--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
            }
          }
        }
      }
    },
    {
      "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--"
            }
          }
        }
      }
    },
    {
      "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-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-grandchild--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
            }
          }
        }
      }
    },
    {
      "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--"
            }
          }
        }
      }
    },
    {
      "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-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          },
          {
            "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-parent--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-parent--"
            },
            "attributes": {
              "title": "Parent Item"
            }
          },
          {
            "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
409 Conflict
{
  "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"
          }
        }
      }
    }
  }
}
{
  "errors": {
    "status": "409",
    "title": "RestAPI error: Client-generated `id` already exists"
  }
}
POST /items
201
409 Conflict
{
  "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--"
          }
        }
      }
    }
  }
}
{
  "errors": {
    "status": "409",
    "title": "RestAPI error: Client-generated `id` already exists"
  }
}
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-grandchild--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
            },
            "attributes": {
              "title": "Grandchild Item"
            }
          }
        ]
      }
    }
  }
}
POST /items
201
409 Conflict
{
  "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--"
          }
        }
      }
    }
  }
}
{
  "errors": {
    "status": "409",
    "title": "RestAPI error: Circular reference, The new parent is a child of current item"
  }
}
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-grandchild--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-grandchild--"
            }
          }
        }
      }
    },
    {
      "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": "--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--"
          }
        }
      },
      "children": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-child--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-child--"
            },
            "attributes": {
              "title": "Child Item"
            }
          }
        ]
      }
    }
  }
}
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"
          }
        }
      },
      "children": {
        "data": [
          {
            "type": "items",
            "id": "--test-item-child--",
            "links": {
              "self": "https://silo-dev.pod.blue/items/--test-item-child--"
            },
            "attributes": {
              "title": "Child Item"
            }
          }
        ]
      }
    }
  }
}
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
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}

Error checks: /items

POST /items
401
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "RestAPI error: Authentication needed"
  }
}
POST /items
400
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "unknwon": null
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "data": null
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "data": [
  ]
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
409
401 Unauthorized
{
  "data": {
    "type": "wrong_type"
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "data": {
    "type": "items"
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "data": {
    "type": "items",
    "attributes": null
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
POST /items
400
401 Unauthorized
{
  "data": {
    "type": "items",
    "attributes": [
    ]
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
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
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
400
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
400
401 Unauthorized
{
  "unknown": null
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
400
401 Unauthorized
{
  "data": null
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
400
401 Unauthorized
{
  "data": [
  ]
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
409
401 Unauthorized
{
  "data": {
    "type": "wrong_type"
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
400
401 Unauthorized
{
  "data": {
    "type": "items"
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
409
401 Unauthorized
{
  "data": {
    "type": "items",
    "id": "--test-item-child--"
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
409
401 Unauthorized
{
  "data": {
    "type": "items",
    "id": "--test-item-parent--",
    "relationships": {
      "parent": {
        "data": {
          "type": "items",
          "id": "--fake-id--"
        }
      }
    }
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
409
401 Unauthorized
{
  "data": {
    "type": "items",
    "id": "--test-item-parent--",
    "relationships": {
      "parent": {
        "data": {
          "type": "items",
          "id": "--test-item-parent--"
        }
      }
    }
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
PATCH /items/--test-item-parent--
409
401 Unauthorized
{
  "data": {
    "type": "items",
    "id": "--test-item-parent--",
    "relationships": {
      "parent": {
        "data": {
          "type": "items",
          "id": "--test-item-child--"
        }
      }
    }
  }
}
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /items/--test-item-child--
401
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "RestAPI error: Authentication needed"
  }
}
DELETE /items/--test-item-child--
403
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}

Error checks: Deletes of non-empties

DELETE /users/test@test.com
409
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /items/--test-item-parent--
409
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}

Clean up!

DELETE /items/--test-item-child--
204
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /items/--test-item-grandchild--
204
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /items/--test-item-parent--
204
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /users/test@test.com
204
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}
DELETE /users/me
204
401 Unauthorized
{
  "errors": {
    "status": "401",
    "title": "Authentication failed"
  }
}