{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/bigdata/json-schema/bigdata-public-people-response-schema.json",
  "title": "PublicPeopleResponse",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/bigdata-private-markets-api-openapi.yml#/components/schemas/PublicPeopleResponse",
  "properties": {
    "results": {
      "items": {
        "$ref": "#/$defs/PublicPosition"
      },
      "type": "array",
      "title": "Results",
      "description": "People who hold or held a position at the company, one entry per position, in the order the data provider lists them. A response holds one page; send `pagination.cursor` back as `cursor` for the next. Empty when the provider has no positions for the company."
    },
    "errors": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/ErrorDetail"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errors"
    },
    "metadata": {
      "$ref": "#/$defs/PublicPeopleMetadata"
    },
    "pagination": {
      "anyOf": [
        {
          "$ref": "#/$defs/Pagination"
        },
        {
          "type": "null"
        }
      ]
    },
    "sources": {
      "items": {
        "$ref": "#/$defs/Source"
      },
      "type": "array",
      "title": "Sources",
      "description": "The content catalog sources the response was built from, one entry per source. Empty when no catalog source contributed."
    },
    "usage": {
      "anyOf": [
        {
          "$ref": "#/$defs/Usage"
        },
        {
          "type": "null"
        }
      ],
      "description": "Tokens the request consumed, per content tier. Present only for API keys billed in tokens."
    }
  },
  "type": "object",
  "required": [
    "results",
    "metadata"
  ],
  "$defs": {
    "DatePrecision": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "day",
            "month",
            "year"
          ],
          "title": "DatePrecision",
          "description": "How much of a date is known. Parts of the date beyond it carry no meaning."
        },
        {
          "type": "string"
        }
      ]
    },
    "DateWithPrecision": {
      "properties": {
        "value": {
          "type": "string",
          "format": "date",
          "title": "Value",
          "description": "The date."
        },
        "precision": {
          "anyOf": [
            {
              "$ref": "#/$defs/DatePrecision"
            },
            {
              "type": "null"
            }
          ],
          "description": "How much of the date is known. Parts of the date beyond it carry no meaning."
        }
      },
      "type": "object",
      "required": [
        "value"
      ],
      "title": "DateWithPrecision",
      "description": "A date that may be known only to the month or the year."
    },
    "ErrorDetail": {
      "properties": {
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Message"
        }
      },
      "type": "object",
      "title": "ErrorDetail"
    },
    "Pagination": {
      "properties": {
        "cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cursor",
          "description": "Next page token or URL to retrieve the next page of results."
        },
        "has_cursor": {
          "type": "boolean",
          "title": "Has Cursor",
          "description": "Whether there are more pages available after this one.",
          "default": false
        }
      },
      "type": "object",
      "title": "Pagination",
      "description": "Common pagination response for endpoints that support pagination."
    },
    "PublicPeopleMetadata": {
      "properties": {
        "request_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Request Id"
        },
        "timestamp": {
          "type": "string",
          "title": "Timestamp"
        },
        "rp_entity_id": {
          "type": "string",
          "maxLength": 6,
          "minLength": 6,
          "title": "Rp Entity Id",
          "description": "The RavenPack entity ID of the company requested."
        }
      },
      "type": "object",
      "required": [
        "rp_entity_id"
      ],
      "title": "PublicPeopleMetadata"
    },
    "PublicPosition": {
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name",
          "description": "Name of the person who holds or held the position."
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Title",
          "description": "The position's title."
        },
        "role_type": {
          "anyOf": [
            {
              "$ref": "#/$defs/RoleType"
            },
            {
              "type": "null"
            }
          ],
          "description": "The kind of position."
        },
        "is_current": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Is Current",
          "description": "Whether the person still holds the position."
        },
        "started_on": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateWithPrecision"
            },
            {
              "type": "null"
            }
          ],
          "description": "Date the person started in the position."
        },
        "ended_on": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateWithPrecision"
            },
            {
              "type": "null"
            }
          ],
          "description": "Date the person left the position."
        }
      },
      "type": "object",
      "title": "PublicPosition",
      "description": "One position a person holds or held at the company."
    },
    "RoleType": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "executive",
            "employee",
            "advisor",
            "board_member",
            "board_observer"
          ],
          "title": "RoleType",
          "description": "What kind of position a person holds at a company."
        },
        {
          "type": "string"
        }
      ]
    },
    "Source": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id",
          "description": "Content catalog identifier of the source."
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "Catalog name of the dataset the data came from."
        }
      },
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "title": "Source",
      "description": "A content catalog source that contributed data to a structured-data response."
    },
    "Usage": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Usage",
      "description": "Public structured-data usage for a request, aggregated per content tier.\n\nA flat object keyed per content tier, where each key is derived from the\ncontent tier identifier by dropping the ``content-`` prefix and appending\n``_tokens`` (e.g. ``corporate-fundamentals`` ->\n``corporate_fundamentals_tokens``). It is sparse: only tiers with non-zero\ntokens appear, and an absent key means zero tokens for that tier."
    }
  }
}