Discovering Viewcast tilesets

List the Viewcast 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 Viewcast tilesets you can build grants against.

Endpoint

GET /v2/viewcast/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/viewcast/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: 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: "viewcast").

Example response

{
  "data": {
    "tilesets": [
      {
        "slug": "viewsheds",
        "title": "Viewcast 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": {
              "viewshed_id": "String",
              "classification_type": "String"
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "request_id": "req_e8281bd0f5a1",
    "credits_used": 0,
    "product": "viewcast"
  }
}

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?