{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/runn/main/json-schema/runn-person-schema.json",
  "title": "Person",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/runn-openapi.json#/components/schemas/Person",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "email": {
      "type": [
        "string",
        "null"
      ]
    },
    "isArchived": {
      "type": "boolean"
    },
    "references": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Reference"
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "note": {
            "type": "string"
          },
          "createdBy": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "note",
          "createdBy"
        ]
      }
    },
    "teamId": {
      "type": [
        "integer",
        "null"
      ]
    },
    "tags": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "level": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "level"
        ]
      }
    },
    "holidaysGroupId": {
      "type": [
        "integer",
        "null"
      ]
    },
    "customFields": {
      "type": "object",
      "properties": {
        "select": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "id": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "name",
                    "id"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "values"
            ]
          }
        },
        "text": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "value"
            ]
          }
        },
        "checkbox": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              },
              "value": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "name",
              "value"
            ]
          }
        },
        "date": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              },
              "value": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date",
                "description": "Format: YYYY-MM-DD"
              }
            },
            "required": [
              "id",
              "name",
              "value"
            ]
          }
        }
      },
      "required": [
        "select",
        "text",
        "checkbox",
        "date"
      ]
    },
    "managers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID referencing the user managing the person.",
            "type": "integer"
          }
        },
        "required": [
          "id"
        ]
      }
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp of when the object was created."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp of when the object was last updated."
    }
  },
  "required": [
    "id",
    "firstName",
    "lastName",
    "email",
    "isArchived",
    "references",
    "notes",
    "teamId",
    "tags",
    "skills",
    "holidaysGroupId",
    "customFields",
    "managers",
    "createdAt",
    "updatedAt"
  ],
  "$defs": {
    "Reference": {
      "type": "object",
      "properties": {
        "referenceName": {
          "minLength": 1,
          "type": "string"
        },
        "externalId": {
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "referenceName",
        "externalId"
      ]
    },
    "Tag": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ]
    }
  }
}