{
  "type": "object",
  "required": ["id", "type", "attributes", "relationships"],
  "properties": {
    "type": { "type": "string" },
    "id": { "type": "integer" },
    "attributes": {
      "type": "object",
      "required": ["label", "order", "plannedCount", "startedAt", "plannedAt",
                   "finishedAt", "abandonedAt", "state"],
      "properties": {
        "label": { "type": "string" },
        "order": { "type": "integer" },
        "plannedCount": { "type": "integer" },
        "state": { "type": "string" },
        "startedAt": { "type": "integer" },
        "plannedAt": { "type": "integer" },
        "finishedAt": { "type": "integer" },
        "abandonedAt": { "type": "integer" }
      },
      "additionalProperties": false
    },

    "relationships": {
      "type": "object",
      "required": ["user", "project"],
      "properties": {

        "user": {
          "type": "object",
          "required": ["data"],
          "properties": {
            "data": {
              "type": "object",
              "required": ["type", "id"],
              "properties": {
                "type": { "type": "string" },
                "id": { "type": "integer" }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },

        "project": {
          "type": "object",
          "required": ["data"],
          "properties": {
            "data": {
              "oneOf": [
                { "type": "null" },
                {
                  "type": "object",
                  "required": ["type", "id"],
                  "properties": {
                    "type": { "type": "string" },
                    "id": { "type": "integer" }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "additionalProperties": false
        }

      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
