{
  "$schema": "http://json-schema.org/schema#",
  "modelTags": "",
  "$schemaVersion": "0.0.2",
  "title": "CommuniCity Toolbox - PersonKeyPoints",
  "description": "This entity stores information about a set of body-keypoints of an image of a person. It is intended to be used with computer vision algorithms to infer the position of different parts of the body from an image.",
  "type": "object",
  "allOf": [
    {
      "$ref": "https://smart-data-models.github.io/data-models/common-schema.json#/definitions/GSMA-Commons"
    },
    {
      "$ref": "https://smart-data-models.github.io/data-models/common-schema.json#/definitions/Location-Commons"
    },
    {
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "PersonKeyPoints"
          ],
          "description": "Property. It must be equal to `PersonKeyPoints`"
        },
        "dateObserved": {
          "type": "string",
          "format": "date-time",
          "description": "Property. Model:'http://schema.org/DateTime'. The date on which the person was detected."
        },
        "image": {
          "allOf": [
            {
              "$ref": "https://smart-data-models.github.io/data-models/common-schema.json#/definitions/EntityIdentifierType"
            }
          ],
          "description": "Relationship. Id of the source image entity."
        },
        "boundingBox": {
          "type": "object",
          "properties": {
            "xmin": {
              "type": "number"
            },
            "ymin": {
              "type": "number"
            },
            "xmax": {
              "type": "number"
            },
            "ymax": {
              "type": "number"
            }
          },
          "required": [
            "xmin",
            "ymin",
            "xmax",
            "ymax"
          ],
          "description": "Property. Model:'https://schema.org/StructuredValue'. Relative coordinates of the bounding box around the detected person."
        },
        "confidence": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Property. Model:'http://schema.org/Number'. Units:'0 to 1'. Confidence of the detection."
        },
        "keypoints": {
          "type": "object",
          "properties": {
            "nose": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_eye": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_eye": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_ear": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_ear": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_shoulder": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_shoulder": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_elbow": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_elbow": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_wrist": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_wrist": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_hip": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_hip": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_knee": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_knee": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "left_ankle": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            },
            "right_ankle": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          "required": [],
          "description": "List of detected visible body parts and their relative coordinates and confidence (x, y, conf)."
        }
      }
    }
  ],
  "required": [
    "id",
    "type",
    "dateObserved",
    "boundingBox",
    "keypoints",
    "confidence"
  ]
}