Discovering Displays tilesets

List the Displays tilesets your map client can render, and how to read the catalog's layer schema and zoom-range metadata.

The tile discovery endpoint returns the customer-facing catalog of Displays tilesets you can build grants against.

Endpoint

GET /v2/displays/tiles/tilesets

  • Auth: none required (security: [] in the spec).
  • Cost: 0 credits.
  • Cache: Cache-Control: private, no-store.

Example request:

curl "https://api.mworks.com/v2/displays/tiles/tilesets"

What a row tells you

Each entry in data.tilesets[] describes one layer you can name in a grant:

FieldMeaning
slugCustomer-facing layer slug: faces, viewsheds, paths_vehicle, paths_pedestrian, gates_vehicle, or gates_pedestrian. This is the value accepted in TileGrantCreateRequest.tilesets[] and the {layer} path segment of the tile-bytes URL.
titleHuman-readable display title, suitable for a "supported layers" UI.
minzoom / maxzoomZoom range the tileset serves.
boundsGeographic bounds [west, south, east, north] in WGS84, for map setup.
layers[]TileJSON 3.0.0 vector_layers[] entries: one per MVT layer the tileset emits, with the layer id as it appears inside the tile bytes (often default for single-layer tilesets, NOT the URL slug), a description, zoom range, and a fields map of feature property to type (String, Number, or Boolean).

The meta block carries the standard request meta (request_id, credits_used: 0, product: "displays").

Example response (schema-derived, pending live E2E verification)

The response shape below is derived from the OpenAPI schema and the Viewcast tile surface precedent. It has not yet been exercised against the live Displays tile API. Treat the product value and the exact fields map as provisional until verified.

{
  "data": {
    "tilesets": [
      {
        "slug": "viewsheds",
        "title": "Displays Viewsheds",
        "minzoom": 0,
        "maxzoom": 16,
        "bounds": [-125.0, 24.0, -66.0, 50.0],
        "layers": [
          {
            "id": "default",
            "description": "Modeled OOH viewshed polygons",
            "minzoom": 0,
            "maxzoom": 16,
            "fields": {
              "display_id": "String",
              "classification_type": "String"
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "request_id": "req_e8281bd0f5a1",
    "credits_used": 0,
    "product": "displays"
  }
}

The field list above is illustrative. Read the actual layers[].fields map from the live catalog before styling; it is the contract MapLibre reads back out of the tile bytes.

Rule for consumers: read the catalog you get and build grants against the slugs it returns, rather than hard-coding the layer list client-side. The catalog is the admission surface: a slug that does not appear is not grantable.


Did this page help you?