---
title: "The public provenance record: what this deployment runs."
method: GET
path: "/v1/platform"
tags: ["meta"]
---

# The public provenance record: what this deployment runs.

`GET /v1/platform`

## Request

- Base URL: `https://api.mapmap.ai`
- URL: `https://api.mapmap.ai/v1/platform`
- Auth: none declared

Keyless by design, so a prospective customer, an auditor or an agent
can check the claims a marketing page makes without an account.
Always 200: every field degrades to `null` rather than failing, so a
missing manifest reads as "unrecorded" rather than taking the
endpoint down.

## Response `200`

What this deployment runs: gateway build, routing engine and the OSM snapshot / build / swap dates of the graph it serves, the basemap archives, the geocoder, the declared DEM and the freshness of each live data feed (`live_feeds`). Public, keyless and cached for five minutes. Every field is nullable and `null` means unrecorded, never "current"; no key material, no identities and no usage appear here

- PlatformResponse: `GET /v1/platform` response body.
  - `basemap` BasemapProvenance, required: The basemap archives.
    - `generator` string, nullable: What generated the vector archive. `null` when there is no archive to attribute.
    - `planet` PlanetArchive: The planet vector archive and its provenance.
      - `archive` string, required: Filename as published, content-addressed where available.
      - `built_at` string, nullable: When the archive was published, from its mtime (RFC 3339).
      - `osm_timestamp` string, nullable: OSM snapshot date behind the archive (RFC 3339), from `planet-manifest.json`. `null` when unrecorded: `osmium merge` drops the replication header, so the archive's own metadata cannot answer this.
    - `world_relief` ReliefArchive: The shaded-relief raster archive. Natural Earth II is a fixed published dataset, not an OSM snapshot, so it carries no `osm_timestamp`.
      - `archive` string, required: Filename as published, content-addressed where available.
      - `built_at` string, nullable: When the archive was published, from its mtime (RFC 3339).
  - `gateway` GatewayProvenance, required: The gateway build, exactly as `/health` reports it.
    - `build` string, required: Git commit the running image was built from (`SN_BUILD_SHA`), or `unknown`.
    - `version` string, required: Gateway crate version.
  - `generated_at` string, required: When this record was assembled (RFC 3339, UTC). Not a build date: it is the timestamp of the read, and exists so a cached copy can be aged.
  - `geocoding` GeocodingProvenance, required: Which geocoder answers, and how old its index is.
    - `engine` string, nullable: `sn-geocode` (the first-party index) or `photon` (the proxy). `null` when neither is configured and `GET /geocode` answers 501.
    - `index_built_at` string, nullable: When the first-party index was last written (RFC 3339), from its `index_meta.json` mtime. `null` on the Photon path, which publishes no build date the gateway can see.
    - `index_version` string, nullable: Schema version of the first-party index. `null` on the Photon path.
  - `live_feeds` LiveFeedsProvenance: The live inputs and how fresh each one is.
    - `checked_at` string, nullable: When the watcher last checked (RFC 3339). `null` when its record carries no readable time, in which case `watcher_stale` is true.
    - `feeds` LiveFeed[], required: One entry per live input this deployment records.
      - `age_s` integer, nullable: Age of `last_data_at` when this record was assembled, in seconds.
      - `cause` string, nullable: `upstream` when this is a snapshot that is stale because the feed it is built from is stale (or has only just recovered).
      - `id` string, required: Stable id, e.g. `ntis-fused`, `ntis-predicted`, `fuel-gb`.
      - `label` string, required: What it is, for a page to print.
      - `last_data_at` string, nullable: When its newest data arrived (RFC 3339). `null` when none has been recorded.
      - `source` string, nullable: Who publishes it, e.g. `National Highways NTIS`.
      - `status` string, required: `ok`, `stale` (no new data for longer than `threshold_s`) or `unknown` (the watcher could not read it, or the watcher's own record is too old to trust).
      - `threshold_s` integer, nullable: How long without new data before the feed counts as stale, in seconds.
    - `watcher_stale` boolean, required: True when that check is older than three watcher intervals (at least 15 minutes). Every `status` below then reads `unknown`.
  - `routing` RoutingProvenance, required: The routing engine and its graph.
    - `engine` string, required: Engine serving the routing endpoints (`valhalla`, `graphhopper` or `auto`), as `/health` reports it.
    - `engine_version` string, nullable: Engine version this deployment declares (`SN_ROUTING_ENGINE_VERSION`, else the graph manifest's `valhalla_version`, else the version `distro/docker-compose.yml` pins). `null` on a GraphHopper-only deployment, which the Valhalla-shaped default would misdescribe.
    - `graph` GraphProvenance, required: The routing graph, from the manifest the build script wrote beside `tiles.tar` plus the archive's own mtime.
      - `built_at` string, nullable: When the graph was built (RFC 3339). `null` when unrecorded.
      - `osm_timestamp` string, nullable: OSM snapshot date behind the graph (RFC 3339). `null` when the build did not record one, never "today".
      - `sources` string[], nullable: Territory ids merged into the build. `null` when unrecorded.
      - `swapped_at` string, nullable: When the graph was swapped into production, from the mtime of the tile extract the engine is serving (RFC 3339). `null` when the gateway cannot see the archive.
      - `tile_count` integer, nullable: Number of tiles in that extract. `null` when unrecorded.
    - `patches` integer, nullable: Number of source patches applied to that engine (`SN_ROUTING_ENGINE_PATCHES`, default 0: the stock image is unpatched). `null` alongside a `null` `engine_version`.
    - `surface_graphs` SurfaceGraphProvenance[], required: Region-scoped surface-quality graphs a second engine serves for wheelchair routing (`SN_SURFACE_GRAPH_MANIFEST`), one entry per manifest region. Empty when the deployment has none, so the record never understates what the box runs.
      - `built_at` string, required: When the graph was built.
      - `engine_version` string, required: Engine version serving the graph.
      - `osm_timestamp` string, required: OSM data timestamp of the extract the graph was built from.
      - `region` string, required: Region id (e.g. `estonia`), as `surface_quality.region` echoes it.
      - `rule` string, required: The exclusion rule, in words.
  - `terrain` TerrainProvenance, required: The declared DEM, as `/status` reports it.
    - `dataset` string, nullable: Operator-declared DEM label (`SN_ELEVATION_DATASET`). `null` when undeclared.
    - `resolution_m` number, double, nullable: Operator-declared ground resolution in metres (`SN_ELEVATION_RESOLUTION_M`). `null` is honestly unknown.

---

[API](https://skmtc.dev/mapmap/apis/sn-gateway.md) · [All operations](https://skmtc.dev/mapmap/apis/sn-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/mapmap/apis/sn-gateway/revisions/2293be8b4c38?raw)
