{
  "fields": [
    {
      "name": "person_id",
      "type": "string",
      "constraints": {
        "required": true
      }
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "given_names",
      "type": "array"
    },
    {
      "name": "family_names",
      "type": "array"
    },
    {
      "name": "organizations",
      "type": "array",
      "description": "Optional organizations relevant for this person (e.g., parliamentary group/party)."
    },
    {
      "name": "since",
      "type": "string",
      "description": "ISO 8601 date (YYYY-MM-DD). Null/omitted if unknown or not bounded."
    },
    {
      "name": "until",
      "type": "string",
      "description": "ISO 8601 date (YYYY-MM-DD). Null/omitted if unknown or not bounded."
    },
    {
      "name": "vote_events_total",
      "type": "integer",
      "constraints": {
        "required": true
      }
    },
    {
      "name": "present",
      "type": "integer",
      "constraints": {
        "required": true
      }
    },
    {
      "name": "absent",
      "type": "integer",
      "constraints": {
        "required": true
      }
    },
    {
      "name": "present_share",
      "type": "string",
      "description": "present / vote_events_total. Null/omitted if undefined (e.g., total is 0)."
    },
    {
      "name": "extras",
      "type": "object",
      "description": "Additional metadata fields not covered by the core schema."
    }
  ]
}