{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "Data Center Atlas API",
    "summary": "Static JSON API of Data Center Atlas.",
    "description": "Data centres around the world. A static, read-only JSON API served by GitHub Pages: plain files over HTTPS with no key, no sign-up and CORS enabled. Within v1 changes are additive only.\n\nRead before using:\n- Each status is the last reported project status as of a dated source (status_as_of), not the status today.\n- Locators are not building footprints or construction extents; some markers identify only a town or region, not a facility position.\n- Empty or null values are unknown, never zero.\n- Coverage is incomplete and varies by country.\n\nGitHub Pages serves .ndjson, .sqlite and SHA256SUMS as application/octet-stream and .zip as application/x-zip-compressed; identify formats by file extension or by media_type here, not by Content-Type.\n\nLicences: Creative Commons Attribution 4.0 International for Atlas-authored data; geometries derived from OpenStreetMap are © OpenStreetMap contributors under Open Data Commons Open Database License 1.0; other third-party facts keep their source terms (https://kiankyars.github.io/datacenter-atlas/about/attribution/). Cite as: Kyars, K. (2026). Data Center Atlas (2026-10-27) [Data set]. https://kiankyars.github.io/datacenter-atlas/downloads/2026-10-27-research-hundredsecond/",
    "version": "1",
    "contact": {
      "name": "Kian Kyars",
      "url": "https://github.com/kiankyars/datacenter-atlas/issues"
    },
    "license": {
      "name": "CC BY 4.0 (Atlas data) and ODbL 1.0 (OpenStreetMap-derived geometries)",
      "identifier": "CC-BY-4.0 AND ODbL-1.0"
    }
  },
  "externalDocs": {
    "description": "API guide",
    "url": "https://kiankyars.github.io/datacenter-atlas/api/"
  },
  "servers": [
    {
      "url": "https://kiankyars.github.io/datacenter-atlas",
      "description": "GitHub Pages (static files)"
    }
  ],
  "tags": [
    {
      "name": "sites",
      "description": "Physical sites and their GeoJSON."
    },
    {
      "name": "projects",
      "description": "Construction projects."
    },
    {
      "name": "evidence",
      "description": "Evidence rows."
    },
    {
      "name": "countries",
      "description": "Sites by country."
    },
    {
      "name": "metadata",
      "description": "Index, statistics, versions, vocabularies, citation and contract."
    }
  ],
  "paths": {
    "/api/v1/index.json": {
      "get": {
        "operationId": "getIndex",
        "summary": "API root: dataset metadata, endpoint templates, downloads, licences and the citation.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "API root: dataset metadata, endpoint templates, downloads, licences and the citation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Index"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sites.json": {
      "get": {
        "operationId": "listSites",
        "summary": "Array of site summaries, sorted by name.",
        "tags": [
          "sites"
        ],
        "responses": {
          "200": {
            "description": "Array of site summaries, sorted by name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SiteSummary"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sites.geojson": {
      "get": {
        "operationId": "getSitesGeoJSON",
        "summary": "GeoJSON FeatureCollection of every site; feature properties are site summaries.",
        "tags": [
          "sites"
        ],
        "responses": {
          "200": {
            "description": "GeoJSON FeatureCollection of every site; feature properties are site summaries.",
            "content": {
              "application/geo+json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sites/{site_id}.json": {
      "get": {
        "operationId": "getSite",
        "summary": "One site: typed site record, its projects and every evidence row.",
        "tags": [
          "sites"
        ],
        "responses": {
          "200": {
            "description": "One site: typed site record, its projects and every evidence row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "site_id",
            "in": "path",
            "required": true,
            "description": "Site identifier (site_id), as in api/v1/sites.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
            },
            "example": "vcc-site-7e0aadb2cd0ce2755f0d"
          }
        ]
      }
    },
    "/api/v1/projects.json": {
      "get": {
        "operationId": "listProjects",
        "summary": "Array of typed project records (CSV order).",
        "tags": [
          "projects"
        ],
        "responses": {
          "200": {
            "description": "Array of typed project records (CSV order).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Project"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{project_id}.json": {
      "get": {
        "operationId": "getProject",
        "summary": "One project with its site summary and evidence.",
        "tags": [
          "projects"
        ],
        "responses": {
          "200": {
            "description": "One project with its site summary and evidence.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "description": "Project identifier (project_id), as in api/v1/projects.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
            },
            "example": "00253157-45c0-5fde-ba45-79e7f4d56e84"
          }
        ]
      }
    },
    "/api/v1/evidence.json": {
      "get": {
        "operationId": "listEvidence",
        "summary": "Array of typed evidence records (CSV order).",
        "tags": [
          "evidence"
        ],
        "responses": {
          "200": {
            "description": "Array of typed evidence records (CSV order).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Evidence"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/evidence/{evidence_id}.json": {
      "get": {
        "operationId": "getEvidence",
        "summary": "One evidence record with the projects and sites it supports.",
        "tags": [
          "evidence"
        ],
        "responses": {
          "200": {
            "description": "One evidence record with the projects and sites it supports.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidenceDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "evidence_id",
            "in": "path",
            "required": true,
            "description": "Evidence identifier (evidence_id), as in api/v1/evidence.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
            },
            "example": "0018bbb4-353b-533f-81ca-d19336a4c0f1"
          }
        ]
      }
    },
    "/api/v1/countries.json": {
      "get": {
        "operationId": "listCountries",
        "summary": "Country summaries, by site count.",
        "tags": [
          "countries"
        ],
        "responses": {
          "200": {
            "description": "Country summaries, by site count.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountrySummary"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/countries/{iso2}.json": {
      "get": {
        "operationId": "getCountry",
        "summary": "One country (upper-case ISO code) with its site summaries.",
        "tags": [
          "countries"
        ],
        "responses": {
          "200": {
            "description": "One country (upper-case ISO code) with its site summaries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "iso2",
            "in": "path",
            "required": true,
            "description": "Upper-case ISO 3166-1 alpha-2 country code, as in api/v1/countries.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            },
            "example": "US"
          }
        ]
      }
    },
    "/api/v1/stats.json": {
      "get": {
        "operationId": "getStats",
        "summary": "Counts by status, month, country, location type and source, with units and research audit metadata.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "Counts by status, month, country, location type and source, with units and research audit metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stats"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/versions.json": {
      "get": {
        "operationId": "listVersions",
        "summary": "Every dataset version with counts, files, checksums and record-level changes from the previous version.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "Every dataset version with counts, files, checksums and record-level changes from the previous version.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Versions"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/vocabularies.json": {
      "get": {
        "operationId": "getVocabularies",
        "summary": "Labels and descriptions for coded values.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "Labels and descriptions for coded values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vocabularies"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sites/{site_id}.geojson": {
      "get": {
        "operationId": "getSiteGeoJSON",
        "summary": "One site as a GeoJSON FeatureCollection (one feature), for GIS tools.",
        "tags": [
          "sites"
        ],
        "responses": {
          "200": {
            "description": "One site as a GeoJSON FeatureCollection (one feature), for GIS tools.",
            "content": {
              "application/geo+json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureCollection"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "site_id",
            "in": "path",
            "required": true,
            "description": "Site identifier (site_id), as in api/v1/sites.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
            },
            "example": "vcc-site-7e0aadb2cd0ce2755f0d"
          }
        ]
      }
    },
    "/api/v1/countries/{iso2}.geojson": {
      "get": {
        "operationId": "getCountryGeoJSON",
        "summary": "The sites of one country as a GeoJSON FeatureCollection.",
        "tags": [
          "countries"
        ],
        "responses": {
          "200": {
            "description": "The sites of one country as a GeoJSON FeatureCollection.",
            "content": {
              "application/geo+json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureCollection"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "iso2",
            "in": "path",
            "required": true,
            "description": "Upper-case ISO 3166-1 alpha-2 country code, as in api/v1/countries.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            },
            "example": "US"
          }
        ]
      }
    },
    "/api/v1/countries/{iso2}.csv": {
      "get": {
        "operationId": "getCountryCSV",
        "summary": "The sites of one country as CSV (RFC 4180, CRLF, list columns as JSON arrays).",
        "tags": [
          "countries"
        ],
        "responses": {
          "200": {
            "description": "The sites of one country as CSV (RFC 4180, CRLF, list columns as JSON arrays).",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "parameters": [
          {
            "name": "iso2",
            "in": "path",
            "required": true,
            "description": "Upper-case ISO 3166-1 alpha-2 country code, as in api/v1/countries.json.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            },
            "example": "US"
          }
        ]
      }
    },
    "/api/v1/citation.json": {
      "get": {
        "operationId": "getCitation",
        "summary": "How to cite the current version: APA text, BibTeX, biblatex, RIS and CSL-JSON.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "How to cite the current version: APA text, BibTeX, biblatex, RIS and CSL-JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Citation"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openapi.json": {
      "get": {
        "operationId": "getOpenAPI",
        "summary": "OpenAPI 3.1 description of every endpoint, with JSON Schemas of each response.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 description of every endpoint, with JSON Schemas of each response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/schemas/index.json": {
      "get": {
        "operationId": "listSchemas",
        "summary": "Index of the JSON Schemas (2020-12) of every API response and record type.",
        "tags": [
          "metadata"
        ],
        "responses": {
          "200": {
            "description": "Index of the JSON Schemas (2020-12) of every API response and record type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchemaIndex"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Geometry": {
        "title": "GeoJSON geometry",
        "description": "A GeoJSON geometry object (RFC 7946) in WGS 84 longitude/latitude.",
        "type": "object",
        "required": [
          "type",
          "coordinates"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "MultiPolygon",
              "Point",
              "Polygon"
            ]
          },
          "coordinates": {
            "type": "array"
          }
        }
      },
      "SourceRef": {
        "title": "Evidence summary",
        "description": "Summary of one evidence row: who published it, when, where and under which licence.",
        "type": "object",
        "required": [
          "evidence_id",
          "title",
          "publisher",
          "kind",
          "published_at",
          "source_url",
          "license",
          "attribution"
        ],
        "properties": {
          "evidence_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "publisher": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "license": {
            "type": [
              "string",
              "null"
            ]
          },
          "attribution": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "TypedMetricObservation": {
        "title": "Typed metric observation",
        "description": "One item of an embedded JSON array (schema.json embedded_types.typed_metric_observation).",
        "type": "object",
        "required": [
          "as_of_date",
          "base",
          "confidence",
          "evidence_id",
          "high",
          "low",
          "method",
          "metric",
          "notes",
          "stage",
          "target_date",
          "unit"
        ],
        "properties": {
          "as_of_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "base": {
            "type": [
              "number",
              "null"
            ]
          },
          "confidence": {
            "type": [
              "number",
              "null"
            ]
          },
          "evidence_id": {
            "type": "string"
          },
          "high": {
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "type": [
              "number",
              "null"
            ]
          },
          "method": {
            "type": [
              "string",
              "null"
            ]
          },
          "metric": {
            "type": [
              "string",
              "null"
            ]
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ]
          },
          "target_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "RoleClaim": {
        "title": "Role claim",
        "description": "One item of an embedded JSON array (schema.json embedded_types.role_claim).",
        "type": "object",
        "required": [
          "evidence_id",
          "party",
          "relationship_scope",
          "role"
        ],
        "properties": {
          "evidence_id": {
            "type": "string"
          },
          "party": {
            "type": [
              "string",
              "null"
            ]
          },
          "relationship_scope": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_record_id": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "WorkloadObservation": {
        "title": "Workload observation",
        "description": "One item of an embedded JSON array (schema.json embedded_types.workload_observation).",
        "type": "object",
        "required": [
          "as_of_date",
          "confidence",
          "deployment_scope",
          "evidence_id",
          "method",
          "workload"
        ],
        "properties": {
          "as_of_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "confidence": {
            "type": [
              "number",
              "null"
            ]
          },
          "deployment_scope": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence_id": {
            "type": "string"
          },
          "method": {
            "type": [
              "string",
              "null"
            ]
          },
          "workload": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Site": {
        "title": "Site record",
        "description": "A typed sites.csv row: empty CSV values are null, *_json columns are parsed and lose the suffix, then the derived fields follow.",
        "type": "object",
        "required": [
          "site_id",
          "physical_site_stable_key",
          "name",
          "country",
          "country_iso_a2",
          "latitude",
          "longitude",
          "geometry",
          "geometry_type",
          "geometry_source_entity_kinds",
          "geometry_derivations",
          "geometry_methods",
          "geometry_scope_classes",
          "geometry_authority_classes",
          "geometry_use_scopes",
          "geometry_precision_scopes",
          "horizontal_uncertainty_metres",
          "horizontal_uncertainty_unknown_reason",
          "geometry_evidence_ids",
          "project_count",
          "project_ids",
          "project_stable_keys",
          "statuses",
          "oldest_status_as_of",
          "newest_status_as_of",
          "verification_posture",
          "independent_imagery_verification",
          "imagery_review_outcomes",
          "official_boundary",
          "country_slug",
          "url",
          "api_url",
          "geometry_licenses",
          "geometry_attributions"
        ],
        "properties": {
          "site_id": {
            "type": "string",
            "description": "Atlas identifier of the physical site (vcc-site-…), derived deterministically from physical_site_stable_key. Primary key."
          },
          "physical_site_stable_key": {
            "type": "string",
            "description": "Stable curation key of the physical site or parent campus, for example curated:<slug>. It groups the projects at one site; it is not a claim of global de-duplication across other databases."
          },
          "name": {
            "type": "string",
            "description": "Site or campus name as given by the selected source evidence. Not a legal entity name."
          },
          "country": {
            "type": "string",
            "description": "Name of the country or territory where the site is located."
          },
          "country_iso_a2": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 code of the country or territory."
          },
          "latitude": {
            "type": "number",
            "description": "WGS 84 latitude, in decimal degrees, of the site's display anchor. For a Point it repeats the point locator, with the same scope and precision limits (some point locators are themselves source-derived centroids). For a Polygon or MultiPolygon it is only a convenient marker position for the shape, usually but not always inside it, and not a surveyed point; geometry_json is the locator. Never use it as a building or construction location."
          },
          "longitude": {
            "type": "number",
            "description": "WGS 84 longitude, in decimal degrees, of the site's display anchor (see latitude)."
          },
          "geometry": {
            "description": "GeoJSON geometry (WGS 84, longitude then latitude) of the site's reviewed locator or official boundary: a Point, Polygon or MultiPolygon. A locator only locates the site; it is not a building footprint, construction extent or surveyed boundary. Even an official boundary is a parcel or permit boundary, not the area under construction.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Geometry"
              }
            ]
          },
          "geometry_type": {
            "type": "string",
            "description": "GeoJSON type of geometry_json: Point, Polygon or MultiPolygon."
          },
          "geometry_source_entity_kinds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of what the source geometries describe (campus, facility, building, project or address_area), one entry per distinct value across the site's projects."
          },
          "geometry_derivations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of how the published geometry was derived from its source, for example direct_geometry or coordinates_to_point. Free-form review codes, shown verbatim."
          },
          "geometry_methods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the source-specific methods used to obtain the geometry. Free-form review codes, shown verbatim."
          },
          "geometry_scope_classes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of scope classes saying what the geometry represents, for example a shared-campus reference point or an official address locator. Free-form review codes, shown verbatim."
          },
          "geometry_authority_classes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the authority of the geometry sources: official_source, community_source or community_mapped."
          },
          "geometry_use_scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of how the geometry may be used: official_boundary, campus_locator, project_locator or reviewed_site_locator. Every scope except official_boundary is a locator, not a footprint."
          },
          "geometry_precision_scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of plain-language statements of what the geometry does and does not represent."
          },
          "horizontal_uncertainty_metres": {
            "type": [
              "number",
              "null"
            ],
            "description": "Stated horizontal uncertainty of the locator in metres, when a bounded value is known. Empty means unknown, never zero."
          },
          "horizontal_uncertainty_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no numeric horizontal uncertainty is given. Empty when horizontal_uncertainty_metres is set."
          },
          "geometry_evidence_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of evidence_id values (evidence.csv) of the sources that supplied the site geometry."
          },
          "project_count": {
            "type": "integer",
            "description": "Number of projects linked to the site in this data snapshot."
          },
          "project_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the project_id values (projects.csv) linked to the site."
          },
          "project_stable_keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the stable curation keys of the projects linked to the site."
          },
          "statuses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the distinct last reported project statuses of the site's projects. Each is the status reported on that project's status date, not a current status."
          },
          "oldest_status_as_of": {
            "type": "string",
            "format": "date",
            "description": "Earliest status date (status_as_of) among the site's projects, as an ISO 8601 date."
          },
          "newest_status_as_of": {
            "type": "string",
            "format": "date",
            "description": "Latest status date (status_as_of) among the site's projects, as an ISO 8601 date."
          },
          "verification_posture": {
            "type": "string",
            "description": "Code summarising the verification basis: a dated authoritative physical-status observation plus a reviewed location, official boundary or surrounding estate. Check the observation date and location scope. It does not mean independent, imagery-based or on-site verification."
          },
          "independent_imagery_verification": {
            "type": "boolean",
            "description": "Whether construction has been independently verified from imagery. The schema allows only false: no data snapshot claims independent imagery verification."
          },
          "imagery_review_outcomes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the imagery review outcome codes of the site's projects, for example not_reviewed. Outcomes are review records only and never create or change a construction claim."
          },
          "official_boundary": {
            "type": "boolean",
            "description": "true when at least one project at the site uses an official boundary geometry (geometry_use_scope = official_boundary)."
          },
          "country_slug": {
            "type": "string",
            "description": "Lower-case ISO 3166-1 alpha-2 code, used in country page URLs."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the site's HTML page."
          },
          "api_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the site's JSON document (api/v1/sites/<site_id>.json)."
          },
          "geometry_licenses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted distinct license values of the evidence rows named in geometry_evidence_ids: the terms that govern the site's geometry. ODbL-1.0 marks OpenStreetMap-derived geometry (share-alike); other codes are the source's own terms. Empty when no geometry evidence row records a licence."
          },
          "geometry_attributions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted distinct attribution values of the same geometry evidence rows, to credit when reusing the geometry."
          }
        }
      },
      "Evidence": {
        "title": "Evidence record",
        "description": "A typed evidence.csv row: empty CSV values are null, *_json columns are parsed and lose the suffix, then the derived fields follow.",
        "type": "object",
        "required": [
          "evidence_id",
          "roles",
          "project_ids",
          "kind",
          "title",
          "source_url",
          "publisher",
          "source_family",
          "license",
          "attribution",
          "published_at",
          "retrieved_at",
          "content_hash",
          "publication_date_precision",
          "content_hash_scope",
          "source_record_id",
          "source_local_id",
          "source_record_sha256",
          "site_ids",
          "url",
          "api_url",
          "archive_url"
        ],
        "properties": {
          "evidence_id": {
            "type": "string",
            "description": "Atlas identifier (UUID) of the evidence record. Primary key; referenced by status_evidence_id, geometry_evidence_id and the evidence_id of typed observations and role claims in projects.csv."
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of how the evidence is used for the linked projects: physical_status, geometry, operating_model, workload, workload_scope:<scope>, role:<role>, typed_metric:<metric>, or context:<kind> for identity and distinctness context that creates no claim on its own."
          },
          "project_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "JSON array of the project_id values (projects.csv) the evidence supports."
          },
          "kind": {
            "type": "string",
            "description": "Kind of evidence, for example company_disclosure, government_record or openstreetmap."
          },
          "title": {
            "type": "string",
            "description": "Title of the source document, page or record as captured."
          },
          "source_url": {
            "type": "string",
            "format": "uri",
            "description": "URL of the source. The Atlas links to sources; it does not redistribute third-party documents."
          },
          "publisher": {
            "type": "string",
            "description": "Publisher or author of the source."
          },
          "source_family": {
            "type": "string",
            "description": "Atlas grouping code for sources from the same publisher channel or API. Free-form code."
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Rights or licence code recorded for the source, for example CC-BY-4.0, ODbL-1.0 or all-rights-reserved. The source's own terms remain controlling."
          },
          "attribution": {
            "type": [
              "string",
              "null"
            ],
            "description": "Attribution text required or recommended for the source."
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publication date or timestamp of the source (ISO 8601) when the source states one; empty when it does not."
          },
          "retrieved_at": {
            "type": "string",
            "description": "Date and time (ISO 8601) at which the source was retrieved or captured."
          },
          "content_hash": {
            "type": "string",
            "description": "SHA-256 of retained source material or a factual record projection. Read content_hash_scope and source provenance to identify exactly what was hashed; this is not always publisher-page content."
          },
          "publication_date_precision": {
            "type": "string",
            "description": "Precision of published_at: day, month, datetime or unknown. Unknown dates remain empty; month dates are not padded."
          },
          "content_hash_scope": {
            "type": "string",
            "description": "What content_hash covers; imported source_record_projection hashes a canonical factual record projection, never the publisher page."
          },
          "source_record_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original source inventory record ID, when imported."
          },
          "source_local_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original record-local source ID, when imported."
          },
          "source_record_sha256": {
            "type": [
              "string",
              "null"
            ],
            "description": "SHA-256 of the full canonical source inventory object, when imported."
          },
          "site_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted site_id values of the sites reached through project_ids."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the evidence JSON document (api/v1/evidence/<evidence_id>.json). Evidence rows have no HTML page of their own, so unlike sites and projects this url is the JSON document; it equals api_url."
          },
          "api_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the evidence JSON document; the same value as url."
          },
          "archive_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Wayback Machine URL for source_url at retrieved_at (https://web.archive.org/web/<timestamp>/<source_url>); the archive redirects to its nearest capture, which may not exist or may differ from the reviewed capture identified by content_hash. null when source_url is not an http(s) URL."
          }
        }
      },
      "Project": {
        "title": "Project record",
        "description": "A typed projects.csv row: empty CSV values are null, *_json columns are parsed and lose the suffix, then the derived fields follow.",
        "type": "object",
        "required": [
          "project_id",
          "project_stable_key",
          "site_id",
          "physical_site_stable_key",
          "name",
          "country",
          "country_iso_a2",
          "latitude",
          "longitude",
          "geometry",
          "geometry_type",
          "geometry_source_entity_kind",
          "geometry_derivation",
          "geometry_method",
          "geometry_scope_class",
          "geometry_authority_class",
          "geometry_use_scope",
          "geometry_precision_scope",
          "horizontal_uncertainty_metres",
          "horizontal_uncertainty_unknown_reason",
          "geometry_evidence_id",
          "last_observed_physical_status",
          "status_as_of",
          "status_age_days_at_review",
          "status_method",
          "status_evidence_id",
          "verification_posture",
          "independent_imagery_verification",
          "imagery_review_outcome",
          "development_type",
          "development_type_unknown_reason",
          "operating_model",
          "operating_model_unknown_reason",
          "operating_model_evidence_id",
          "workloads",
          "workload_unknown_reason",
          "role_claims",
          "power_observations",
          "power_unknown_reason",
          "annual_energy_observations",
          "annual_energy_unknown_reason",
          "efficiency_observations",
          "efficiency_unknown_reason",
          "owner",
          "operator",
          "users",
          "tenants",
          "customers",
          "status_source_url",
          "geometry_source_url",
          "project_details",
          "evidence_ids",
          "status_source",
          "url",
          "api_url",
          "geometry_source"
        ],
        "properties": {
          "project_id": {
            "type": "string",
            "description": "Atlas identifier (UUID) of the project, stable across data updates for the same project. Primary key."
          },
          "project_stable_key": {
            "type": "string",
            "description": "Stable curation key of the project: the parent site key plus a project or phase slug."
          },
          "site_id": {
            "type": "string",
            "description": "Physical site the project belongs to (sites.csv site_id)."
          },
          "physical_site_stable_key": {
            "type": "string",
            "description": "Stable curation key of the project's physical site or parent campus."
          },
          "name": {
            "type": "string",
            "description": "Project or phase name as curated from the selected source evidence."
          },
          "country": {
            "type": "string",
            "description": "Name of the country or territory where the project is located."
          },
          "country_iso_a2": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 code of the country or territory."
          },
          "latitude": {
            "type": "number",
            "description": "WGS 84 latitude, in decimal degrees, of the display anchor of the project's locator. Often the parent campus locator; not the position of the construction works."
          },
          "longitude": {
            "type": "number",
            "description": "WGS 84 longitude, in decimal degrees, of the display anchor of the project's locator (see latitude)."
          },
          "geometry": {
            "description": "GeoJSON geometry (WGS 84, longitude then latitude) used to locate the project. It is often the parent campus locator and is not a project footprint unless geometry_use_scope and geometry_precision_scope say so.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Geometry"
              }
            ]
          },
          "geometry_type": {
            "type": "string",
            "description": "GeoJSON type of geometry_json: Point, Polygon or MultiPolygon."
          },
          "geometry_source_entity_kind": {
            "type": "string",
            "description": "What the source geometry describes: campus, facility, building, project or address_area. A campus geometry used for a project locates the campus, not the project."
          },
          "geometry_derivation": {
            "type": "string",
            "description": "How the published geometry was derived from the source geometry, for example direct_geometry or coordinates_to_point. Free-form review code, shown verbatim."
          },
          "geometry_method": {
            "type": "string",
            "description": "Source-specific method used to obtain the geometry. Free-form review code, shown verbatim."
          },
          "geometry_scope_class": {
            "type": "string",
            "description": "What the geometry represents, for example an official address locator point or a shared-campus reference point. Free-form review code, shown verbatim."
          },
          "geometry_authority_class": {
            "type": "string",
            "description": "Authority of the geometry source: official_source (a government or first-party publisher), community_source or community_mapped (for example OpenStreetMap). Community geometry is never an official boundary."
          },
          "geometry_use_scope": {
            "type": "string",
            "description": "Permitted use of the geometry: official_boundary (an official parcel or surveyed boundary), campus_locator, project_locator or reviewed_site_locator. Locators are not footprints."
          },
          "geometry_precision_scope": {
            "type": "string",
            "description": "Plain-language statement of what the geometry does and does not represent."
          },
          "horizontal_uncertainty_metres": {
            "type": [
              "number",
              "null"
            ],
            "description": "Stated horizontal uncertainty of the locator in metres, when a bounded value is known. Empty means unknown, never zero."
          },
          "horizontal_uncertainty_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no numeric horizontal uncertainty is given. Empty when horizontal_uncertainty_metres is set."
          },
          "geometry_evidence_id": {
            "type": "string",
            "description": "evidence_id (evidence.csv) of the primary geometry source."
          },
          "last_observed_physical_status": {
            "type": "string",
            "description": "Last reported project status on status_as_of: announced, permitted, a construction stage, completed, operational or another lifecycle state. This legacy column name is retained for API and CSV compatibility. Announced and permitted do not mean construction has started; completed does not mean operational."
          },
          "status_as_of": {
            "type": "string",
            "format": "date",
            "description": "Date (ISO 8601) on which the status was observed or reported. Existing records keep this date until a new source establishes a later observation; the Atlas update date does not refresh it."
          },
          "status_age_days_at_review": {
            "type": "integer",
            "description": "Days from status_as_of to the dataset update date. Historical snapshots measured age against their recorded lifecycle reference date."
          },
          "status_method": {
            "type": "string",
            "description": "How the status was established: a project announcement, granted construction or planning consent, a physical-work report, completion or an operating-status report. Each links to its dated primary source."
          },
          "status_evidence_id": {
            "type": "string",
            "description": "evidence_id (evidence.csv) of the source that reports the status."
          },
          "verification_posture": {
            "type": "string",
            "description": "Code summarising the verification basis of the project: a dated authoritative physical-status observation plus a reviewed location, official boundary or surrounding estate. Check status_as_of and geometry_use_scope. It does not mean independent, imagery-based or on-site verification."
          },
          "independent_imagery_verification": {
            "type": "boolean",
            "description": "Whether construction has been independently verified from imagery. The schema allows only false: no data snapshot claims independent imagery verification."
          },
          "imagery_review_outcome": {
            "type": "string",
            "description": "Imagery review outcome code, for example not_reviewed. Review outcomes are records only and never create or change a lifecycle claim."
          },
          "development_type": {
            "type": "string",
            "description": "Development type (greenfield, expansion or retrofit) when the evidence establishes it; otherwise unknown."
          },
          "development_type_unknown_reason": {
            "type": "string",
            "description": "Why the development type is unknown."
          },
          "operating_model": {
            "type": "string",
            "description": "Operating model, for example colocation, when bound to evidence; otherwise unknown. Never inferred from the operator's other facilities."
          },
          "operating_model_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why the operating model is unknown. Empty when operating_model is known."
          },
          "operating_model_evidence_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "evidence_id (evidence.csv) supporting the operating model. Empty when it is unknown."
          },
          "workloads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkloadObservation"
            },
            "description": "JSON array of evidence-linked workload classifications, each with workload, deployment_scope (intended, operational or unknown), method, confidence (0 to 1), as_of_date and evidence_id. These are source classifications, not proof of an operating workload."
          },
          "workload_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no workload classification is published. Empty when workloads_json lists one."
          },
          "role_claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoleClaim"
            },
            "description": "JSON array of evidence-linked party role claims, each with role (operator, owner, customer, tenant or user), party, relationship_scope (current, intended or unknown) and evidence_id."
          },
          "power_observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TypedMetricObservation"
            },
            "description": "JSON array of typed power observations, each with metric (critical_it_mw, gross_facility_mw, grid_connection_mw or generation_nameplate_mw), stage (for example planned, design or contracted), low, base and high values, unit (MW), method, confidence, as_of_date, target_date, evidence_id and notes. A planned or design value is not installed or operating capacity."
          },
          "power_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no typed power observation is published. Missing power is unknown, never zero."
          },
          "annual_energy_observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TypedMetricObservation"
            },
            "description": "JSON array of typed annual energy observations (metric annual_energy_mwh, unit MWh/year) with the same structure as power observations. Published only from scoped observations; never estimated from capacity."
          },
          "annual_energy_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no annual energy observation is published."
          },
          "efficiency_observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TypedMetricObservation"
            },
            "description": "JSON array of typed efficiency observations (metric pue, unit ratio) with the same structure as power observations. A design PUE is not measured performance."
          },
          "efficiency_unknown_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no efficiency observation is published."
          },
          "owner": {
            "type": [
              "string",
              "null"
            ],
            "description": "Owner name(s) from evidence-linked owner role claims, separated by '; '. Empty when no owner claim is published."
          },
          "operator": {
            "type": [
              "string",
              "null"
            ],
            "description": "Operator name(s) from evidence-linked operator role claims (see role_claims_json), separated by '; '. Empty when no operator claim is published."
          },
          "users": {
            "type": [
              "string",
              "null"
            ],
            "description": "User name(s) from evidence-linked user role claims, separated by '; '. Empty when no user claim is published."
          },
          "tenants": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tenant name(s) from evidence-linked tenant role claims, separated by '; '. Empty when no tenant claim is published."
          },
          "customers": {
            "type": [
              "string",
              "null"
            ],
            "description": "Customer name(s) from evidence-linked customer role claims, separated by '; '. Empty when no customer claim is published."
          },
          "status_source_url": {
            "type": "string",
            "format": "uri",
            "description": "URL of the status source; the same as the source_url of the status evidence row."
          },
          "geometry_source_url": {
            "type": "string",
            "format": "uri",
            "description": "URL of the primary geometry source; the same as the source_url of the geometry evidence row."
          },
          "project_details": {
            "type": "array",
            "description": "Full source-linked project records, including investment, capacity, hardware, organizations, milestones, power supply and original scope. Status and location on these records can differ from a selected phase. Local source IDs resolve within record.sources; source_evidence_ids maps them to evidence.csv."
          },
          "evidence_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted evidence_id values of every evidence row whose project_ids include the project."
          },
          "status_source": {
            "description": "Object describing the status evidence: evidence_id, title, publisher, kind, published_at, source_url, license and attribution.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SourceRef"
              }
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the project's section on its site page."
          },
          "api_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the project's JSON document (api/v1/projects/<project_id>.json)."
          },
          "geometry_source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceRef"
              },
              {
                "type": "null"
              }
            ],
            "description": "The same object for the evidence row named in geometry_evidence_id (whose licence governs the project's geometry), or null when the project has no geometry evidence row."
          }
        }
      },
      "SiteSummary": {
        "title": "Site summary",
        "description": "One site in sites.json, sites.geojson properties and country files.",
        "type": "object",
        "required": [
          "site_id",
          "name",
          "country",
          "country_iso_a2",
          "latitude",
          "longitude",
          "geometry_type",
          "official_boundary",
          "locator_scopes",
          "statuses",
          "newest_status_as_of",
          "oldest_status_as_of",
          "project_count",
          "projects",
          "status_publishers",
          "power_observations",
          "verification_posture",
          "independent_imagery_verification",
          "url",
          "api_url",
          "geometry_licenses",
          "geometry_attributions"
        ],
        "properties": {
          "site_id": {
            "type": "string",
            "description": "Atlas site identifier."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Site or campus name."
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "description": "Country or territory name."
          },
          "country_iso_a2": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "description": "ISO 3166-1 alpha-2 code."
          },
          "latitude": {
            "type": "number",
            "description": "Display anchor latitude (WGS 84). Not a footprint centroid."
          },
          "longitude": {
            "type": "number",
            "description": "Display anchor longitude (WGS 84)."
          },
          "geometry_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Point, Polygon or MultiPolygon."
          },
          "official_boundary": {
            "type": "boolean",
            "description": "true when any project at the site uses an official boundary geometry."
          },
          "locator_scopes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Geometry use scopes of the site (sites.csv geometry_use_scopes_json)."
          },
          "statuses": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Distinct last reported project statuses of the site's projects."
          },
          "newest_status_as_of": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Latest project status date at the site."
          },
          "oldest_status_as_of": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Earliest project status date at the site."
          },
          "project_count": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of linked projects."
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "project_id",
                "name",
                "status",
                "status_as_of",
                "search_terms"
              ],
              "properties": {
                "project_id": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status_as_of": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date"
                },
                "search_terms": {
                  "type": "string"
                }
              }
            },
            "description": "Linked projects as {project_id, name, status, status_as_of}, sorted by name."
          },
          "status_publishers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted distinct publishers of the projects' status evidence."
          },
          "power_observations": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "project_id",
                "metric",
                "stage",
                "low",
                "base",
                "high",
                "unit",
                "as_of_date"
              ],
              "properties": {
                "project_id": {
                  "type": "string"
                },
                "metric": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "stage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "low": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "base": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "high": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "unit": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "as_of_date": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            },
            "description": "Typed power observations of the site's projects as {project_id, metric, stage, low, base, high, unit, as_of_date}, ordered by project name then metric. Planned or design values are not installed capacity."
          },
          "verification_posture": {
            "type": [
              "string",
              "null"
            ],
            "description": "Verification basis code (see vocabularies)."
          },
          "independent_imagery_verification": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether imagery verification is claimed; false throughout."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the site page."
          },
          "api_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the full site document."
          },
          "geometry_licenses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted distinct licences of the site's geometry evidence rows (see the derived site field of the same name)."
          },
          "geometry_attributions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted distinct attributions of the site's geometry evidence rows."
          }
        }
      },
      "DatasetRef": {
        "title": "Dataset reference",
        "description": "The dataset version a document belongs to.",
        "type": "object",
        "required": [
          "id",
          "label",
          "release_status",
          "publishable_as_final",
          "checkpoint_date",
          "lifecycle_reference_date",
          "updated_at",
          "observation_window_start",
          "observation_window_end"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "release_status": {
            "type": "string",
            "enum": [
              "preview",
              "draft",
              "published"
            ]
          },
          "publishable_as_final": {
            "type": "boolean"
          },
          "checkpoint_date": {
            "type": "string",
            "format": "date"
          },
          "lifecycle_reference_date": {
            "type": "string",
            "format": "date"
          },
          "updated_at": {
            "type": "string",
            "format": "date"
          },
          "observation_window_start": {
            "type": "string",
            "format": "date"
          },
          "observation_window_end": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "Dataset": {
        "title": "Dataset",
        "description": "Dataset metadata with counts, update date and observation dates.",
        "type": "object",
        "required": [
          "id",
          "label",
          "release_status",
          "publishable_as_final",
          "checkpoint_date",
          "lifecycle_reference_date",
          "updated_at",
          "observation_window_start",
          "observation_window_end",
          "status_window_days",
          "counts",
          "manifest_sha256",
          "repository_path",
          "window_start"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "release_status": {
            "type": "string",
            "enum": [
              "preview",
              "draft",
              "published"
            ]
          },
          "publishable_as_final": {
            "type": "boolean"
          },
          "checkpoint_date": {
            "type": "string",
            "format": "date"
          },
          "lifecycle_reference_date": {
            "type": "string",
            "format": "date"
          },
          "updated_at": {
            "type": "string",
            "format": "date"
          },
          "observation_window_start": {
            "type": "string",
            "format": "date"
          },
          "observation_window_end": {
            "type": "string",
            "format": "date"
          },
          "status_window_days": {
            "type": "integer",
            "description": "Observation span in days for dated updates; historical snapshots used a fixed selection window."
          },
          "counts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Record counts; see stats.json for the meaning of each key."
          },
          "manifest_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "repository_path": {
            "type": "string"
          },
          "window_start": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "License": {
        "title": "Licences",
        "description": "The licence layering: Atlas data, code, OpenStreetMap-derived geometries, third parties.",
        "type": "object",
        "required": [
          "data",
          "code",
          "openstreetmap_geometries",
          "third_party"
        ],
        "properties": {
          "data": {
            "type": "object"
          },
          "code": {
            "type": "object"
          },
          "openstreetmap_geometries": {
            "type": "object"
          },
          "third_party": {
            "type": "string"
          }
        }
      },
      "Download": {
        "title": "Download",
        "description": "One local latest file and its dated target, with separate byte sizes and SHA-256 hashes.",
        "type": "object",
        "required": [
          "name",
          "format",
          "media_type",
          "url",
          "bytes",
          "sha256",
          "pinned_url",
          "pinned_bytes",
          "pinned_sha256"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "format": {
            "type": "string"
          },
          "media_type": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "bytes": {
            "type": "integer"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "pinned_url": {
            "type": "string",
            "format": "uri"
          },
          "pinned_bytes": {
            "type": "integer"
          },
          "pinned_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        }
      },
      "SiteDocument": {
        "title": "Site document",
        "description": "api/v1/sites/{site_id}.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "site",
          "projects",
          "evidence",
          "links"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Project"
            }
          },
          "evidence": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Evidence"
            }
          },
          "links": {
            "type": "object",
            "required": [
              "html",
              "sites",
              "dataset_download",
              "geojson",
              "explorer",
              "dataset_files",
              "latest_download",
              "citation"
            ],
            "properties": {
              "html": {
                "type": "string",
                "format": "uri"
              },
              "sites": {
                "type": "string",
                "format": "uri"
              },
              "dataset_download": {
                "type": "string",
                "format": "uri"
              },
              "geojson": {
                "type": "string",
                "format": "uri"
              },
              "explorer": {
                "type": "string",
                "format": "uri"
              },
              "dataset_files": {
                "type": "string",
                "format": "uri"
              },
              "latest_download": {
                "type": "string",
                "format": "uri"
              },
              "citation": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "ProjectDocument": {
        "title": "Project document",
        "description": "api/v1/projects/{project_id}.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "project",
          "site",
          "evidence",
          "links"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "project": {
            "$ref": "#/components/schemas/Project"
          },
          "site": {
            "$ref": "#/components/schemas/SiteSummary"
          },
          "evidence": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Evidence"
            }
          },
          "links": {
            "type": "object",
            "required": [
              "html",
              "site",
              "dataset_download",
              "dataset_files",
              "latest_download"
            ],
            "properties": {
              "html": {
                "type": "string",
                "format": "uri"
              },
              "site": {
                "type": "string",
                "format": "uri"
              },
              "dataset_download": {
                "type": "string",
                "format": "uri"
              },
              "dataset_files": {
                "type": "string",
                "format": "uri"
              },
              "latest_download": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "EvidenceDocument": {
        "title": "Evidence document",
        "description": "api/v1/evidence/{evidence_id}.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "evidence",
          "projects",
          "sites"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "evidence": {
            "$ref": "#/components/schemas/Evidence"
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "project_id",
                "name",
                "site_id",
                "status",
                "status_as_of",
                "url",
                "api_url"
              ],
              "properties": {
                "project_id": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "site_id": {
                  "type": "string"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status_as_of": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "api_url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "sites": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "site_id",
                "name",
                "url",
                "api_url"
              ],
              "properties": {
                "site_id": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "api_url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "FeatureCollection": {
        "title": "Sites GeoJSON",
        "description": "A GeoJSON FeatureCollection (RFC 7946, rings oriented counterclockwise) whose feature properties are site summaries; dataset, license and attribution are foreign members.",
        "type": "object",
        "required": [
          "type",
          "name",
          "dataset",
          "license",
          "attribution",
          "attribution_url",
          "features"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "FeatureCollection"
          },
          "name": {
            "type": "string"
          },
          "dataset": {
            "type": "object",
            "required": [
              "id",
              "label",
              "release_status"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "release_status": {
                "type": "string"
              }
            }
          },
          "license": {
            "$ref": "#/components/schemas/License"
          },
          "attribution": {
            "type": "string"
          },
          "attribution_url": {
            "type": "string",
            "format": "uri"
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "type",
                "id",
                "geometry",
                "properties"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "const": "Feature"
                },
                "id": {
                  "type": "string"
                },
                "geometry": {
                  "$ref": "#/components/schemas/Geometry"
                },
                "properties": {
                  "$ref": "#/components/schemas/SiteSummary"
                }
              }
            }
          }
        }
      },
      "CountrySummary": {
        "title": "Country summary",
        "description": "One entry of countries.json.",
        "type": "object",
        "required": [
          "country_iso_a2",
          "country",
          "slug",
          "site_count",
          "project_count",
          "statuses",
          "site_ids",
          "url",
          "api_url",
          "geojson_url",
          "csv_url"
        ],
        "properties": {
          "country_iso_a2": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "description": "ISO 3166-1 alpha-2 code (upper case); used in the country API paths."
          },
          "country": {
            "type": "string",
            "description": "Country or territory name."
          },
          "slug": {
            "type": "string",
            "description": "Lower-case ISO code, used in the country page URL."
          },
          "site_count": {
            "type": "integer",
            "description": "Number of physical sites in the country."
          },
          "project_count": {
            "type": "integer",
            "description": "Number of projects at those sites."
          },
          "statuses": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Number of projects per last reported project status (counts projects, not sites), most frequent first."
          },
          "site_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sorted site_id values of the country's sites."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the country page."
          },
          "api_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the country JSON document (api/v1/countries/<ISO>.json)."
          },
          "geojson_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the country's sites as GeoJSON (api/v1/countries/<ISO>.geojson)."
          },
          "csv_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL of the country's sites as CSV (api/v1/countries/<ISO>.csv)."
          }
        }
      },
      "CountryDocument": {
        "title": "Country document",
        "description": "api/v1/countries/{iso2}.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "country",
          "sites"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "country": {
            "$ref": "#/components/schemas/CountrySummary"
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteSummary"
            }
          }
        }
      },
      "Stats": {
        "title": "Statistics",
        "description": "api/v1/stats.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "counts",
          "by_status",
          "by_country",
          "by_status_month",
          "by_geometry_type",
          "by_locator_scope",
          "by_verification_posture",
          "by_evidence_kind",
          "by_evidence_license",
          "by_power_metric",
          "release_gates",
          "units"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "counts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Record counts of the version (see Counts). Keys come from the data snapshot manifest plus four derived counts."
          },
          "by_status": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Projects per last reported project status (unit: projects; sums to counts.projects)."
          },
          "by_country": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Sites per country name (unit: sites; sums to counts.physical_sites)."
          },
          "by_status_month": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Projects per month (YYYY-MM) of status_as_of (unit: projects)."
          },
          "by_geometry_type": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Sites per geometry type; Polygon and MultiPolygon are counted separately here (unit: sites)."
          },
          "by_locator_scope": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Projects per geometry_use_scope code (unit: projects). reviewed_site_locator here is one specific scope code; counts.reviewed_site_locator_projects instead counts every project with any reviewed locator."
          },
          "by_verification_posture": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Projects per verification posture code (unit: projects)."
          },
          "by_evidence_kind": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Evidence rows per kind (unit: evidence rows; sums to counts.evidence)."
          },
          "by_evidence_license": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Evidence rows per licence code; rows without a licence count as 'unspecified' (unit: evidence rows)."
          },
          "by_power_metric": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Typed power observations per metric (unit: observations, not projects). Efficiency (PUE) and annual-energy observations are not included."
          },
          "release_gates": {
            "type": "object",
            "description": "Legacy research checks from selection-report.json; lists are replaced by their lengths."
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The unit each by_* map counts: projects, sites, evidence_rows or observations."
          }
        }
      },
      "Version": {
        "title": "Dataset version",
        "description": "One entry of versions.json.",
        "type": "object",
        "required": [
          "id",
          "kind",
          "label",
          "checkpoint_date",
          "lifecycle_reference_date",
          "release_status",
          "publishable_as_final",
          "counts",
          "manifest_sha256",
          "files",
          "download_base_url",
          "repository_url",
          "added_site_ids",
          "removed_site_ids",
          "page_url",
          "derived_downloads",
          "changes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Version identifier: the dataset directory name."
          },
          "kind": {
            "type": "string",
            "description": "Publication category: published for date-based updates; older snapshots retain their original archive category."
          },
          "label": {
            "type": "string",
            "description": "Human-readable version name."
          },
          "checkpoint_date": {
            "type": "string",
            "format": "date",
            "description": "Date the data snapshot was recorded."
          },
          "lifecycle_reference_date": {
            "type": "string",
            "format": "date",
            "description": "Date used to calculate observation age. Equals the update date for date-based updates; older snapshots retain their original reference date."
          },
          "release_status": {
            "type": "string",
            "enum": [
              "preview",
              "draft",
              "published"
            ],
            "description": "Published for date-based updates; older snapshots retain their original publication status."
          },
          "publishable_as_final": {
            "type": "boolean",
            "description": "True for published data updates. Historical snapshots retain the result of their original publication review."
          },
          "counts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Record counts from the version's manifest."
          },
          "manifest_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "description": "SHA-256 of the version's manifest.json, which binds every original file."
          },
          "files": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "bytes",
                "sha256",
                "url",
                "derived"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "bytes": {
                  "type": "integer"
                },
                "sha256": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{64}$"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "derived": {
                  "type": "boolean"
                }
              }
            },
            "description": "Every file in downloads/<id>/: the original data snapshot files (derived false; they never change) and, for versions published as current, the derived formats, zip and SHA256SUMS written by the site builder (derived true; rebuilt by each site build)."
          },
          "download_base_url": {
            "type": "string",
            "format": "uri",
            "description": "The version's download directory; its index page lists every file with its checksum."
          },
          "repository_url": {
            "type": "string",
            "format": "uri",
            "description": "The version's directory in the source repository."
          },
          "added_site_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sites in this version that were not in the previous one."
          },
          "removed_site_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sites of the previous version that are not in this one."
          },
          "page_url": {
            "type": "string",
            "format": "uri",
            "description": "The version's HTML page with its changes and citation."
          },
          "derived_downloads": {
            "type": "boolean",
            "description": "Whether downloads/<id>/ also holds derived formats and a zip."
          },
          "changes": {
            "type": "object",
            "required": [
              "previous",
              "schema",
              "sites",
              "projects",
              "evidence"
            ],
            "properties": {
              "previous": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "required": [
                    "added_columns",
                    "removed_columns"
                  ],
                  "properties": {
                    "added_columns": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "removed_columns": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "sites": {
                "type": "object",
                "required": [
                  "added",
                  "removed",
                  "changed"
                ],
                "properties": {
                  "added": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "removed": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "changed": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "fields"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "projects": {
                "type": "object",
                "required": [
                  "added",
                  "removed",
                  "changed"
                ],
                "properties": {
                  "added": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "removed": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "changed": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "fields"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "evidence": {
                "type": "object",
                "required": [
                  "added",
                  "removed",
                  "changed"
                ],
                "properties": {
                  "added": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "removed": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "changed": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "fields"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "description": "Record-level changes from the previous version: for sites, projects and evidence the added, removed and changed IDs (with the names of the changed CSV columns), and columns added or removed per table."
          }
        }
      },
      "Versions": {
        "title": "Versions",
        "description": "api/v1/versions.json",
        "type": "object",
        "required": [
          "api_version",
          "current",
          "last_preview",
          "versions"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "current": {
            "type": "string"
          },
          "last_preview": {
            "type": "string"
          },
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Version"
            }
          }
        }
      },
      "Vocabularies": {
        "title": "Vocabularies",
        "description": "api/v1/vocabularies.json: for each vocabulary, code -> {label, description} (power_metrics add unit).",
        "type": "object",
        "required": [
          "api_version",
          "statuses",
          "status_methods",
          "geometry_use_scopes",
          "geometry_authority_classes",
          "verification_postures",
          "power_metrics",
          "power_stages",
          "estimate_methods",
          "evidence_kinds",
          "evidence_roles",
          "relationship_scopes",
          "workload_deployment_scopes",
          "party_roles",
          "workloads",
          "workload_methods",
          "operating_models",
          "development_types",
          "geometry_source_entity_kinds",
          "release_gates",
          "imagery_review_outcomes"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "statuses": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "status_methods": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "geometry_use_scopes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "geometry_authority_classes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "verification_postures": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "power_metrics": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "power_stages": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "estimate_methods": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "evidence_kinds": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "evidence_roles": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "relationship_scopes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "workload_deployment_scopes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "party_roles": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "workloads": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "workload_methods": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "operating_models": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "development_types": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "geometry_source_entity_kinds": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "release_gates": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "imagery_review_outcomes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "description"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Index": {
        "title": "API index",
        "description": "api/v1/index.json",
        "type": "object",
        "required": [
          "api_version",
          "name",
          "description",
          "base_url",
          "repository_url",
          "dataset",
          "endpoints",
          "downloads",
          "license",
          "attribution_url",
          "docs_url",
          "build",
          "title",
          "caveats",
          "attribution",
          "citation",
          "citation_url",
          "openapi_url",
          "schemas_url",
          "llms_txt_url",
          "versions_url",
          "downloads_url",
          "dataset_files_url",
          "feeds",
          "media_type_note"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1",
            "description": "API version of this path (\"1\")."
          },
          "name": {
            "type": "string",
            "description": "Site name."
          },
          "description": {
            "type": "string",
            "description": "Site tagline."
          },
          "base_url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute URL every other URL starts with."
          },
          "repository_url": {
            "type": "string",
            "format": "uri",
            "description": "Source repository."
          },
          "dataset": {
            "description": "The current data snapshot with counts, update date, observation date range and manifest hash. Observation dates are separate from the update date.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Dataset"
              }
            ]
          },
          "endpoints": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Absolute URL templates of every endpoint; replace {site_id}, {project_id}, {evidence_id} or {iso2}."
          },
          "downloads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Download"
            },
            "description": "Files of downloads/latest/ with format, media type, size, SHA-256 and pinned URL under downloads/<id>/."
          },
          "license": {
            "description": "Licence layering: Atlas data, code, OpenStreetMap-derived geometries (ODbL) and third-party terms.",
            "allOf": [
              {
                "$ref": "#/components/schemas/License"
              }
            ]
          },
          "attribution_url": {
            "type": "string",
            "format": "uri",
            "description": "Attribution and legal notices page."
          },
          "docs_url": {
            "type": "string",
            "format": "uri",
            "description": "Human-readable API guide."
          },
          "build": {
            "type": "object",
            "required": [
              "source_commit"
            ],
            "properties": {
              "source_commit": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "description": "Source commit the site was built from (null for a local build)."
          },
          "title": {
            "type": "string",
            "description": "Dataset title used in citations."
          },
          "caveats": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The four rules every reader of the data needs."
          },
          "attribution": {
            "type": "string",
            "description": "Attribution statement to use when reusing the data."
          },
          "citation": {
            "type": "string",
            "description": "Citation of the current version (APA style)."
          },
          "citation_url": {
            "type": "string",
            "format": "uri",
            "description": "All citation formats (api/v1/citation.json)."
          },
          "openapi_url": {
            "type": "string",
            "format": "uri",
            "description": "OpenAPI 3.1 description of the API."
          },
          "schemas_url": {
            "type": "string",
            "format": "uri",
            "description": "Index of the JSON Schemas of every response."
          },
          "llms_txt_url": {
            "type": "string",
            "format": "uri",
            "description": "Plain-text guide for language models and agents."
          },
          "versions_url": {
            "type": "string",
            "format": "uri",
            "description": "Versions page."
          },
          "downloads_url": {
            "type": "string",
            "format": "uri",
            "description": "Index of the download directories."
          },
          "dataset_files_url": {
            "type": "string",
            "format": "uri",
            "description": "Download directory of the current version."
          },
          "feeds": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            },
            "description": "Atom feeds of new versions and new sites."
          },
          "media_type_note": {
            "type": "string",
            "description": "How GitHub Pages labels some download formats."
          }
        }
      },
      "Citation": {
        "title": "Citation",
        "description": "api/v1/citation.json",
        "type": "object",
        "required": [
          "api_version",
          "dataset",
          "apa",
          "bibtex",
          "biblatex",
          "ris",
          "csl_json",
          "citation_cff_url",
          "version_url",
          "files_url"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "apa": {
            "type": "string"
          },
          "bibtex": {
            "type": "string"
          },
          "biblatex": {
            "type": "string"
          },
          "ris": {
            "type": "string"
          },
          "csl_json": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "citation_cff_url": {
            "type": "string",
            "format": "uri"
          },
          "version_url": {
            "type": "string",
            "format": "uri"
          },
          "files_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "SchemaIndex": {
        "title": "Schema index",
        "description": "api/v1/schemas/index.json",
        "type": "object",
        "required": [
          "api_version",
          "schemas",
          "openapi_url"
        ],
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1"
          },
          "schemas": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            }
          },
          "openapi_url": {
            "type": "string",
            "format": "uri"
          }
        }
      }
    },
    "responses": {
      "NotFound": {
        "description": "No such record: GitHub Pages answers with its HTML 404 page.",
        "content": {
          "text/html": {
            "schema": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
