{
  "name": "Mapping",
  "type": "object",
  "properties": {
    "id": {
      "$ref": "_id.json"
    },
    "mappable_id": {
      "$ref": "_id.json"
    },
    "mappable_type": {
      "type": "string",
      "pattern": "(Topic|Synapse)"
    },
    "xloc": {
      "type": "integer"
    },
    "yloc": {
      "type": "integer"
    },
    "created_at": {
      "$ref": "_datetimestamp.json"
    },
    "updated_at": {
      "$ref": "_datetimestamp.json"
    },
    "map_id": {
      "$ref": "_id.json"
    },
    "map": {
      "$ref": "_map.json"
    },
    "user_id": {
      "$ref": "_id.json"
    },
    "user": {
      "$ref": "_user.json"
    }
  },
  "required": [
    "id",
    "mappable_id",
    "mappable_type",
    "created_at",
    "updated_at"
  ],
  "allOf": [
    {
      "oneOf": [
        { "required": [ "map_id" ] },
        { "required": [ "map" ] }
      ]
    },
    {
      "oneOf": [
        { "required": [ "user_id" ] },
        { "required": [ "user" ] }
      ]
    }
  ]
}
