{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "ALNOP public research API",
    "version": "2.2.0",
    "description": "Read-only published snapshot, immutable releases and documentary coverage. Incomplete corpus; technical metrics do not imply historical war coverage."
  },
  "servers": [
    {
      "url": "https://alnop.vercel.app"
    }
  ],
  "paths": {
    "/api/v2": {
      "get": {
        "operationId": "_index",
        "summary": "Index",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Index"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/operations": {
      "get": {
        "operationId": "_operations",
        "summary": "OperationCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id",
                "start_date",
                "-start_date"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY[-MM[-DD]]; interval overlap, unknown starts excluded."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Inclusive bound; partial dates expanded only for filtering."
          },
          {
            "name": "date_precision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory_role",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "has_geometry",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Any documented geometry, including representative points; not a precision guarantee."
          },
          {
            "name": "min_sources",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Minimum number of operation-level source IDs."
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "west,south,east,north in WGS84; west > east crosses the antimeridian. Any point intersects."
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "json",
                "geojson"
              ],
              "default": "json"
            },
            "description": "Pagination applies to both formats; null geometry is retained."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationCollection"
                }
              },
              "application/geo+json": {
                "schema": {
                  "$ref": "#/components/schemas/GeoJSON"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/operations/{id}": {
      "get": {
        "operationId": "_operations__id_",
        "summary": "OperationResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/sources": {
      "get": {
        "operationId": "_sources",
        "summary": "SourceCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SourceCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/sources/{id}": {
      "get": {
        "operationId": "_sources__id_",
        "summary": "SourceResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SourceResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/places": {
      "get": {
        "operationId": "_places",
        "summary": "EntityCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/places/{id}": {
      "get": {
        "operationId": "_places__id_",
        "summary": "EntityResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/persons": {
      "get": {
        "operationId": "_persons",
        "summary": "EntityCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/persons/{id}": {
      "get": {
        "operationId": "_persons__id_",
        "summary": "EntityResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/organizations": {
      "get": {
        "operationId": "_organizations",
        "summary": "EntityCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/organizations/{id}": {
      "get": {
        "operationId": "_organizations__id_",
        "summary": "EntityResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/territorial-units": {
      "get": {
        "operationId": "_territorial_units",
        "summary": "TerritoryCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerritoryCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/territorial-units/{id}": {
      "get": {
        "operationId": "_territorial_units__id_",
        "summary": "TerritoryResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerritoryResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/claims": {
      "get": {
        "operationId": "_claims",
        "summary": "ClaimCollection",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "-id"
              ],
              "default": "id"
            },
            "description": "Deterministic ordering."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Page starts at 1."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            },
            "description": "Maximum records per page."
          },
          {
            "name": "subject",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Operation ID."
          },
          {
            "name": "claim_status",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "supported",
                "contested",
                "unverified"
              ]
            },
            "description": "Documentary status, distinct from publication."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimCollection"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/claims/{id}": {
      "get": {
        "operationId": "_claims__id_",
        "summary": "ClaimResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/operations/{id}/evidence": {
      "get": {
        "operationId": "_operations__id__evidence",
        "summary": "Evidence",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Evidence"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/stats": {
      "get": {
        "operationId": "_stats",
        "summary": "Stats",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY[-MM[-DD]]; interval overlap, unknown starts excluded."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Inclusive bound; partial dates expanded only for filtering."
          },
          {
            "name": "date_precision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory_role",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "has_geometry",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Any documented geometry, including representative points; not a precision guarantee."
          },
          {
            "name": "min_sources",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Minimum number of operation-level source IDs."
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "west,south,east,north in WGS84; west > east crosses the antimeridian. Any point intersects."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stats"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/coverage": {
      "get": {
        "operationId": "_coverage",
        "summary": "Coverage",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "description": "Case and diacritic insensitive substring; no automatic translation."
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated source IDs (OR)."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "const": "published"
            },
            "description": "Only the published snapshot is public."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY[-MM[-DD]]; interval overlap, unknown starts excluded."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Inclusive bound; partial dates expanded only for filtering."
          },
          {
            "name": "date_precision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "territory_role",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated values, OR within this family; AND between families."
          },
          {
            "name": "has_geometry",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Any documented geometry, including representative points; not a precision guarantee."
          },
          {
            "name": "min_sources",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Minimum number of operation-level source IDs."
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "west,south,east,north in WGS84; west > east crosses the antimeridian. Any point intersects."
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Coverage"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/releases": {
      "get": {
        "operationId": "_releases",
        "summary": "Releases",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Releases"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/releases/current": {
      "get": {
        "operationId": "_releases_current",
        "summary": "Current",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Current"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/exports": {
      "get": {
        "operationId": "_exports",
        "summary": "Exports",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exports"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/releases/{id}": {
      "get": {
        "operationId": "_releases__id_",
        "summary": "ReleaseResponse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^data-[0-9]{4}\\.(0[1-9]|1[0-2])\\.[1-9][0-9]*$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published snapshot response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "SHA-256 of this response representation."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReleaseResponse"
                }
              }
            }
          },
          "304": {
            "description": "Representation unchanged"
          },
          "400": {
            "description": "Invalid query or path",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Read-only resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Response exceeds 4 MiB; reduce limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Published snapshot unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/openapi.json": {
      "get": {
        "operationId": "openapi",
        "summary": "OpenAPI 3.1 contract",
        "responses": {
          "200": {
            "description": "OpenAPI document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "openapi",
                    "info",
                    "paths",
                    "components"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Meta": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "api_version",
          "dataset_release",
          "snapshot_sha256",
          "corpus_is_incomplete"
        ],
        "properties": {
          "api_version": {
            "const": "v2"
          },
          "dataset_release": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^data-[0-9]{4}\\.(0[1-9]|1[0-2])\\.[1-9][0-9]*$"
          },
          "snapshot_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "corpus_is_incomplete": {
            "const": true
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "count": {
            "type": "integer",
            "minimum": 0
          },
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          },
          "has_next": {
            "type": "boolean"
          },
          "sort": {
            "type": "string"
          },
          "release_workflow_enabled": {
            "type": "boolean"
          },
          "notice": {
            "type": "string"
          },
          "manifest_url": {
            "type": "string"
          },
          "calculation_version": {
            "const": "coverage-v1"
          },
          "model_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "query_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        }
      },
      "CollectionMeta": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "api_version",
          "dataset_release",
          "snapshot_sha256",
          "corpus_is_incomplete",
          "total",
          "count",
          "page",
          "limit",
          "has_next",
          "sort"
        ],
        "properties": {
          "api_version": {
            "const": "v2"
          },
          "dataset_release": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^data-[0-9]{4}\\.(0[1-9]|1[0-2])\\.[1-9][0-9]*$"
          },
          "snapshot_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "corpus_is_incomplete": {
            "const": true
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "count": {
            "type": "integer",
            "minimum": 0
          },
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          },
          "has_next": {
            "type": "boolean"
          },
          "sort": {
            "type": "string"
          },
          "release_workflow_enabled": {
            "type": "boolean"
          },
          "notice": {
            "type": "string"
          },
          "manifest_url": {
            "type": "string"
          },
          "calculation_version": {
            "const": "coverage-v1"
          },
          "model_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "query_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        }
      },
      "Error": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            }
          }
        }
      },
      "Operation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "schema_version",
          "title",
          "start_date",
          "end_date",
          "locations",
          "territorial_assignments",
          "source_ids",
          "editorial_status",
          "quality_flags",
          "provenance",
          "legacy_territorial_label"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "schema_version": {
            "const": "2.0.0"
          },
          "title": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fr",
              "ar"
            ],
            "properties": {
              "fr": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1
              },
              "ar": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "start_date": {
            "$ref": "#/components/schemas/Operation/$defs/date"
          },
          "end_date": {
            "$ref": "#/components/schemas/Operation/$defs/date"
          },
          "locations": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "label",
                "geometry",
                "geometry_role",
                "review_status"
              ],
              "properties": {
                "place_id": {
                  "type": "string",
                  "pattern": "^PLC_[A-Za-z0-9_-]+$"
                },
                "source_ids": {
                  "type": "array",
                  "minItems": 1,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^SRC_[a-f0-9]{24}$"
                  }
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "geometry": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "type",
                        "coordinates"
                      ],
                      "properties": {
                        "type": {
                          "const": "Point"
                        },
                        "coordinates": {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "items": {
                            "type": "number"
                          }
                        }
                      }
                    }
                  ]
                },
                "geometry_role": {
                  "enum": [
                    "representative_point",
                    "unknown",
                    "approximate_site",
                    "exact_site"
                  ]
                },
                "review_status": {
                  "enum": [
                    "needs_review",
                    "reviewed"
                  ]
                }
              }
            }
          },
          "territorial_assignments": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "territory_id",
                "role",
                "source_ids"
              ],
              "properties": {
                "territory_id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]+$"
                },
                "role": {
                  "enum": [
                    "primary",
                    "secondary",
                    "cross_territorial",
                    "uncertain"
                  ]
                },
                "source_ids": {
                  "type": "array",
                  "minItems": 1,
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "legacy_territorial_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^SRC_[a-f0-9]{24}$"
            }
          },
          "editorial_status": {
            "enum": [
              "proposed",
              "under_review",
              "published",
              "disputed",
              "withdrawn"
            ]
          },
          "quality_flags": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "provenance": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "source_commit",
              "publication_basis",
              "human_review_recorded"
            ],
            "properties": {
              "source_commit": {
                "type": "string",
                "pattern": "^[a-f0-9]{40}$"
              },
              "publication_basis": {
                "enum": [
                  "previously_public_legacy_corpus",
                  "human_review"
                ]
              },
              "human_review_recorded": {
                "type": "boolean"
              }
            }
          },
          "legacy": {
            "type": "object"
          },
          "description": {
            "$ref": "#/components/schemas/Operation/$defs/text"
          },
          "event_type": {
            "type": "array",
            "minItems": 0,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "aliases": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "value",
                "language",
                "source_ids"
              ],
              "properties": {
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1000
                },
                "language": {
                  "enum": [
                    "fr",
                    "ar"
                  ]
                },
                "source_ids": {
                  "type": "array",
                  "minItems": 1,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^SRC_[a-f0-9]{24}$"
                  }
                }
              }
            }
          },
          "participants": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "entity_id",
                "role",
                "source_ids"
              ],
              "properties": {
                "entity_id": {
                  "type": "string",
                  "pattern": "^(PER|ORG)_[A-Za-z0-9_-]+$"
                },
                "role": {
                  "type": "string",
                  "minLength": 1
                },
                "source_ids": {
                  "type": "array",
                  "minItems": 1,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^SRC_[a-f0-9]{24}$"
                  }
                }
              }
            }
          },
          "commanders": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "strategic_impact": {
            "$ref": "#/components/schemas/Operation/$defs/text"
          },
          "outcomes": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "aln": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "forces_francaises": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "civils": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "review_history": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "reviewer",
                "decision",
                "reference",
                "reason",
                "reviewed_at"
              ],
              "properties": {
                "reviewer": {
                  "type": "string",
                  "minLength": 1
                },
                "decision": {
                  "enum": [
                    "approved",
                    "rejected",
                    "needs_information"
                  ]
                },
                "reference": {
                  "type": "string",
                  "format": "uri"
                },
                "reason": {
                  "type": "string",
                  "minLength": 1
                },
                "content_sha256": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                "reviewed_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "editorial_notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "$defs": {
          "date": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "earliest",
              "latest",
              "precision",
              "certainty"
            ],
            "properties": {
              "earliest": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date"
              },
              "latest": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date"
              },
              "precision": {
                "enum": [
                  "day",
                  "month",
                  "year",
                  "range",
                  "unknown"
                ]
              },
              "certainty": {
                "enum": [
                  "documented",
                  "approximate",
                  "disputed",
                  "unknown"
                ]
              }
            }
          },
          "text": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fr",
              "ar"
            ],
            "properties": {
              "fr": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1
              },
              "ar": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "provenance": {
                  "properties": {
                    "publication_basis": {
                      "const": "previously_public_legacy_corpus"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "then": {
              "required": [
                "legacy"
              ],
              "properties": {
                "legacy": {}
              }
            }
          },
          {
            "if": {
              "properties": {
                "provenance": {
                  "properties": {
                    "publication_basis": {
                      "const": "human_review"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "then": {
              "required": [
                "description",
                "event_type",
                "review_history",
                "created_at",
                "updated_at"
              ],
              "properties": {
                "description": {},
                "event_type": {},
                "review_history": {},
                "created_at": {},
                "updated_at": {}
              }
            }
          }
        ]
      },
      "Source": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "source_id",
          "title",
          "review_status"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "pattern": "^SRC_[a-f0-9]{24}$"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "legacy": {
            "type": "object"
          },
          "review_status": {
            "enum": [
              "needs_review",
              "reviewed"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "publication_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "document_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "locator": {
            "type": [
              "string",
              "null"
            ]
          },
          "rights": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_classification": {
            "enum": [
              "primary",
              "secondary",
              "unknown",
              "not_recorded"
            ]
          },
          "review_history": {
            "$ref": "#/components/schemas/Operation/properties/review_history"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Entity": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "label",
          "names",
          "source_ids",
          "editorial_status",
          "review_history",
          "created_at",
          "updated_at",
          "relations"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(PER|ORG|PLC)_[A-Za-z0-9_-]+$",
            "maxLength": 128
          },
          "kind": {
            "enum": [
              "person",
              "organization",
              "place"
            ]
          },
          "label": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fr",
              "ar"
            ],
            "properties": {
              "fr": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1
              },
              "ar": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1
              }
            }
          },
          "names": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "value",
                "language",
                "role",
                "source_ids",
                "valid_from",
                "valid_to"
              ],
              "properties": {
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                },
                "language": {
                  "type": "string",
                  "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]+)*$"
                },
                "script": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^[A-Z][a-z]{3}$"
                },
                "role": {
                  "enum": [
                    "preferred",
                    "alias",
                    "transliteration",
                    "historical_name"
                  ]
                },
                "source_ids": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^SRC_[a-f0-9]{24}$"
                  }
                },
                "valid_from": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date"
                },
                "valid_to": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date"
                }
              }
            }
          },
          "source_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^SRC_[a-f0-9]{24}$"
            }
          },
          "editorial_status": {
            "enum": [
              "proposed",
              "under_review",
              "published",
              "withdrawn"
            ]
          },
          "review_history": {
            "$ref": "#/components/schemas/Operation/properties/review_history"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "geometry": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "coordinates"
                ],
                "properties": {
                  "type": {
                    "const": "Point"
                  },
                  "coordinates": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180
                      },
                      {
                        "type": "number",
                        "minimum": -90,
                        "maximum": 90
                      }
                    ],
                    "items": false
                  }
                }
              }
            ]
          },
          "geometry_role": {
            "enum": [
              "unknown",
              "exact_site",
              "approximate_site",
              "representative_point"
            ]
          },
          "geometry_source_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "relations": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type",
                "target_id",
                "source_ids",
                "review_history"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "same_as_candidate",
                    "same_as"
                  ]
                },
                "target_id": {
                  "type": "string",
                  "pattern": "^(PER|ORG|PLC)_[A-Za-z0-9_-]+$"
                },
                "source_ids": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "review_history": {
                  "$ref": "#/components/schemas/Operation/properties/review_history"
                }
              }
            }
          }
        }
      },
      "Claim": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "subject",
          "predicate",
          "value",
          "status",
          "editorial_status",
          "evidence",
          "contradicts",
          "review_history",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^CLM_[A-Za-z0-9_-]+$",
            "maxLength": 128
          },
          "subject": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]+$",
            "maxLength": 128
          },
          "predicate": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "value": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "lower",
                  "upper"
                ],
                "properties": {
                  "type": {
                    "const": "interval"
                  },
                  "lower": {
                    "type": "number"
                  },
                  "upper": {
                    "type": "number"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "fr",
                  "ar"
                ],
                "properties": {
                  "fr": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "ar": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 1,
                    "maxLength": 10000
                  }
                }
              }
            ]
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "context": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "scope",
              "population",
              "time_scope",
              "valid_from",
              "valid_to"
            ],
            "properties": {
              "scope": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              "population": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              "time_scope": {
                "enum": [
                  "entire_event",
                  "specific_period",
                  "unknown"
                ]
              },
              "valid_from": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date"
              },
              "valid_to": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date"
              }
            }
          },
          "status": {
            "enum": [
              "supported",
              "contested",
              "unverified",
              "withdrawn"
            ]
          },
          "editorial_status": {
            "enum": [
              "proposed",
              "under_review",
              "published",
              "withdrawn"
            ]
          },
          "evidence": {
            "type": "array",
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "source_id",
                "locator"
              ],
              "properties": {
                "source_id": {
                  "type": "string",
                  "pattern": "^SRC_[a-f0-9]{24}$"
                },
                "locator": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2000
                },
                "quotation": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                }
              }
            }
          },
          "contradicts": {
            "type": "array",
            "uniqueItems": true,
            "maxItems": 100,
            "items": {
              "type": "string",
              "pattern": "^CLM_[A-Za-z0-9_-]+$"
            }
          },
          "review_history": {
            "$ref": "#/components/schemas/Operation/properties/review_history"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Territory": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "names",
          "type",
          "valid_from",
          "valid_to",
          "source_ids",
          "review_status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "names": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fr",
              "ar"
            ],
            "properties": {
              "fr": {
                "type": "string",
                "minLength": 1
              },
              "ar": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "type": {
            "enum": [
              "editorial_category",
              "historical_unit"
            ]
          },
          "valid_from": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "valid_to": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "source_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "review_status": {
            "enum": [
              "needs_review",
              "reviewed"
            ]
          },
          "review_history": {
            "$ref": "#/components/schemas/Operation/properties/review_history"
          }
        }
      },
      "CoverageReport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "calculation_version",
          "scope",
          "corpus_is_incomplete",
          "pending_contributions",
          "summary",
          "groups",
          "methodology"
        ],
        "properties": {
          "calculation_version": {
            "const": "coverage-v1"
          },
          "scope": {
            "type": "string"
          },
          "corpus_is_incomplete": {
            "const": true
          },
          "pending_contributions": {
            "type": "null"
          },
          "summary": {
            "type": "object",
            "$ref": "#/components/schemas/CoverageReport/$defs/metrics",
            "unevaluatedProperties": false
          },
          "groups": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "year",
              "territory",
              "type"
            ],
            "properties": {
              "year": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CoverageReport/$defs/row"
                }
              },
              "territory": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CoverageReport/$defs/row"
                }
              },
              "type": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CoverageReport/$defs/row"
                }
              }
            }
          },
          "methodology": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "year_domain",
              "year_basis",
              "group_totals_are_additive",
              "primary_source_rule",
              "pending_contributions_status"
            ],
            "properties": {
              "year_domain": {
                "enum": [
                  "inclusive_calendar_years",
                  "observed_years_only"
                ]
              },
              "year_basis": {
                "type": "string"
              },
              "group_totals_are_additive": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "year",
                  "territory",
                  "type"
                ],
                "properties": {
                  "year": {
                    "const": true
                  },
                  "territory": {
                    "const": false
                  },
                  "type": {
                    "const": false
                  }
                }
              },
              "primary_source_rule": {
                "type": "string"
              },
              "pending_contributions_status": {
                "const": "not_measured"
              }
            }
          }
        },
        "$defs": {
          "metrics": {
            "type": "object",
            "required": [
              "total_operations",
              "unique_sources",
              "without_sources",
              "without_identified_primary_source",
              "uncertain_start_dates",
              "uncertain_locations",
              "without_structured_territory",
              "operations_with_contested_claims",
              "without_recorded_review"
            ],
            "properties": {
              "total_operations": {
                "type": "integer",
                "minimum": 0
              },
              "unique_sources": {
                "type": "integer",
                "minimum": 0
              },
              "without_sources": {
                "type": "integer",
                "minimum": 0
              },
              "without_identified_primary_source": {
                "type": "integer",
                "minimum": 0
              },
              "uncertain_start_dates": {
                "type": "integer",
                "minimum": 0
              },
              "uncertain_locations": {
                "type": "integer",
                "minimum": 0
              },
              "without_structured_territory": {
                "type": "integer",
                "minimum": 0
              },
              "operations_with_contested_claims": {
                "type": "integer",
                "minimum": 0
              },
              "without_recorded_review": {
                "type": "integer",
                "minimum": 0
              }
            }
          },
          "row": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/CoverageReport/$defs/metrics"
              }
            ],
            "required": [
              "key",
              "label",
              "note"
            ],
            "properties": {
              "key": {
                "type": "string"
              },
              "label": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "fr",
                  "ar"
                ],
                "properties": {
                  "fr": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "ar": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "note": {
                "enum": [
                  null,
                  "no_current_record"
                ]
              }
            },
            "unevaluatedProperties": false
          }
        }
      },
      "OperationResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Operation"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "OperationCollection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Operation"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          }
        }
      },
      "SourceResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Source"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "SourceCollection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          }
        }
      },
      "EntityResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Entity"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "EntityCollection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Entity"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          }
        }
      },
      "ClaimResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Claim"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "ClaimCollection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Claim"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          }
        }
      },
      "TerritoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Territory"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "TerritoryCollection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Territory"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          }
        }
      },
      "GeoJSON": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "features",
          "meta"
        ],
        "properties": {
          "type": {
            "const": "FeatureCollection"
          },
          "meta": {
            "$ref": "#/components/schemas/CollectionMeta"
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type",
                "id",
                "geometry",
                "properties"
              ],
              "properties": {
                "type": {
                  "const": "Feature"
                },
                "id": {
                  "type": "string"
                },
                "geometry": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "required": [
                        "type",
                        "coordinates"
                      ],
                      "properties": {
                        "type": {
                          "enum": [
                            "Point",
                            "MultiPoint"
                          ]
                        },
                        "coordinates": {
                          "type": "array"
                        }
                      }
                    }
                  ]
                },
                "properties": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        }
      },
      "Stats": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "total_operations",
              "total_sources",
              "total_claims",
              "by_start_year",
              "by_start_precision",
              "by_type"
            ],
            "properties": {
              "total_operations": {
                "type": "integer",
                "minimum": 0
              },
              "total_sources": {
                "type": "integer",
                "minimum": 0
              },
              "total_claims": {
                "type": "integer",
                "minimum": 0
              },
              "by_start_year": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "by_start_precision": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "by_type": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Coverage": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "scope",
              "total_operations",
              "unknown_start_dates",
              "without_geometry",
              "without_structured_territory",
              "without_sources",
              "legacy_imports_needing_review",
              "contested_claims",
              "pending_contributions",
              "by_start_year",
              "empty_selection_message",
              "documentary_report"
            ],
            "properties": {
              "scope": {
                "type": "string"
              },
              "total_operations": {
                "type": "integer",
                "minimum": 0
              },
              "unknown_start_dates": {
                "type": "integer",
                "minimum": 0
              },
              "without_geometry": {
                "type": "integer",
                "minimum": 0
              },
              "without_structured_territory": {
                "type": "integer",
                "minimum": 0
              },
              "without_sources": {
                "type": "integer",
                "minimum": 0
              },
              "legacy_imports_needing_review": {
                "type": "integer",
                "minimum": 0
              },
              "contested_claims": {
                "type": "integer",
                "minimum": 0
              },
              "pending_contributions": {
                "type": "null"
              },
              "by_start_year": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "empty_selection_message": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "documentary_report": {
                "$ref": "#/components/schemas/CoverageReport"
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Manifest": {
        "type": "object",
        "required": [
          "schema_version",
          "publication_status",
          "canonical_sha256",
          "corpus_is_incomplete",
          "total",
          "checksums"
        ],
        "properties": {
          "schema_version": {
            "const": "2.0.0"
          },
          "publication_status": {
            "const": "validated_snapshot"
          },
          "canonical_sha256": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "corpus_is_incomplete": {
            "const": true
          },
          "checksums": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          }
        }
      },
      "Current": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Manifest"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Release": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "published_at",
          "source_commit",
          "schema_version",
          "total",
          "canonical_sha256",
          "snapshot_manifest_sha256",
          "summary",
          "changes",
          "review_scope",
          "corpus_is_incomplete",
          "license_notice",
          "archive_sha256",
          "files"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^data-[0-9]{4}\\.(0[1-9]|1[0-2])\\.[1-9][0-9]*$"
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "Z$"
          },
          "source_commit": {
            "type": "string",
            "pattern": "^[a-f0-9]{40}$"
          },
          "schema_version": {
            "const": "2.0.0"
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "canonical_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "snapshot_manifest_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "summary": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "changes": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2000
            }
          },
          "review_scope": {
            "const": "technical_publication_of_existing_corpus"
          },
          "corpus_is_incomplete": {
            "const": true
          },
          "license_notice": {
            "type": "string",
            "minLength": 1
          },
          "archive_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "files": {
            "type": "object",
            "minProperties": 1,
            "propertyNames": {
              "pattern": "^[A-Za-z0-9_./-]+$"
            },
            "additionalProperties": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "archive_url": {
            "type": "string",
            "pattern": "^/data/releases/"
          },
          "manifest_url": {
            "type": "string",
            "pattern": "^/data/releases/"
          },
          "citation_url": {
            "type": "string",
            "pattern": "^/data/releases/"
          },
          "changelog_url": {
            "type": "string",
            "pattern": "^/data/releases/"
          },
          "checksum_url": {
            "type": "string",
            "pattern": "^/data/releases/"
          }
        }
      },
      "Releases": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Release"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "ReleaseResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Release"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Exports": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "url",
                "sha256"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "pattern": "^/data/canonical/"
                },
                "sha256": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Evidence": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "operation_id",
              "claims",
              "sources",
              "legacy_evidence",
              "notice"
            ],
            "properties": {
              "operation_id": {
                "type": "string"
              },
              "claims": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Claim"
                }
              },
              "sources": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Source"
                }
              },
              "legacy_evidence": {
                "type": "boolean"
              },
              "notice": {
                "type": "string"
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Index": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "resources",
              "documentation"
            ],
            "properties": {
              "resources": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "documentation": {
                "type": "string"
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      }
    }
  }
}
