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:
| Field | Meaning |
|---|---|
slug | Customer-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. |
title | Human-readable display title, suitable for a "supported layers" UI. |
minzoom / maxzoom | Zoom range the tileset serves. |
bounds | Geographic 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.
Updated about 15 hours ago