Référence de l'API
Une référence des API de données de la passerelle. Les pages précédentes expliquent chaque service; celle-ci est le tableau que vous gardez ouvert pendant que vous écrivez l'appel.
Les cartes, le catalogue, le géocodage, les itinéraires et BYOD ont une entrée complète ci-dessous avec chaque paramètre. Les services Lieux, Transport en commun, Altitude, Événements routiers et l'expansion des itinéraires, figurent avec leur rôle et leurs paramètres dans Autres API et sont documentés en entier sur leurs propres pages.
La version lisible par machine est /openapi.json
(OpenAPI 3.1), repérable depuis
/.well-known/api-catalog. Générez un
client à partir de là plutôt que de recopier cette page.
Conventions
La plupart des routes sont un GET avec des paramètres de requête et sans corps. Les exceptions
sont POST /byod, DELETE /byod/{id}, POST /geocode/batch, POST /matrix, POST /match,
POST /optimized-route, POST /optimize et ses chemins GMPRO, POST /feedback,
POST /places/{id}/feedback, ainsi que les formes avec
corps de POST /route et POST /isochrone, qui n'existent que parce que avoid_areas est un
polygone et qu'un polygone ne tient pas dans une chaîne de requête. Les réponses sont en JSON,
sauf les tuiles (octets Mapbox Vector Tile), le relief (WebP ou PNG), les glyphes et les sprites.
Les coordonnées sont longitude,latitude, dans cet ordre, en degrés WGS84. Les cadres
englobants sont minlng,minlat,maxlng,maxlat.
Un point s'écrit near=lng,lat. Cette écriture fonctionne sur /places/nearby,
/geocode/nearby, /transit/stops, /incidents, /elevation, /geocode/reverse et
/isochrone, ainsi que dans le corps de POST /isochrone. /route nomme ses deux extrémités
from et to, chacune une paire lng,lat. Dans un corps JSON, les paires sont des tableaux :
POST /isochrone utilise donc "near": [lng, lat].
Deux exceptions HTTP ont des noms distincts : /timezone prend lat et lon, et
/identify prend at=lng,lat. Le SDK accepte toujours des paires [lng, lat] pour les deux.
L'authentification est une clé à l'un de quatre endroits, vérifiés dans cet ordre :
| Forme | Quand |
|---|---|
Authorization: Bearer um_live_… | Appels côté serveur. La forme normale. |
X-API-Key: um_live_… | Clients qui réservent Authorization à autre chose. |
X-Goog-Api-Key: um_live_… | Clients REST de Google, comme un client Route Optimization dirigé vers les chemins GMPRO ci-dessous. |
?key=um_live_… | Utilisé dans les URL générées des styles pour les tuiles et les ressources. Ces points de terminaison acceptent aussi les deux formes par en-tête. Exclu des clés du cache partagé des tuiles et des ressources. |
Sur les chemins de données protégés, l'authentification précède le routage : une requête
non authentifiée retourne 401, y compris un chemin qui n'existe pas. Les documents de découverte et /coverage.json sont des exceptions publiques. Voir
Authentification.
Les modules restreignent les couches et grammaires sectorielles : legal-land, energy,
agriculture, remote, mining. Une clé sans le module requis reçoit 403 avec le
module nommé. Voir Couches pour en acheter un.
Cartes
GET /styles/{style}.json
Un document de style MapLibre. L'unique URL dont la plupart des applications ont besoin.
| Paramètre | Où | Notes |
|---|---|---|
style | chemin, obligatoire | base, muted, outdoor, blueprint, blush, orchid, canopy, lagoon, tropic, sunset, bold, pastel, atlas, swiss, winter. Un suffixe -light ou -dark fixe le mode. |
mode | requête | light ou dark. Une valeur inconnue sert le mode clair, y compris lorsque le chemin nommait le mode sombre. |
lang | requête | Sous-étiquette primaire BCP 47. Un tag complet utilise son sous-tag principal, donc fr-CA donne fr. Les noms natifs prennent en charge ja, ko, zh-Hans et zh-Hant. Les tags chinois régionaux choisissent leur écriture (zh-TW → zh-Hant) ; une écriture explicite est prioritaire. Un code non pris en charge donne en et n'est pas un 400. Sans lang, la passerelle lit Accept-Language, puis en. |
theme | requête | Un code ut1. de unmap.dev/create. Un thème remplace la cartographie et l'emporte donc sur le style du chemin. |
overlays | requête | Identifiants du catalogue séparés par des virgules, ou byod:<id>. L'emporte sur profile. |
terrain | requête | on dessine le style sur un terrain en 3D (ajoute unmap_terrain et une clé terrain); off ou l'absence le laisse plat. Toute autre valeur donne un 400; sans terrain configuré, un 503. |
exaggeration | requête | Amplification du relief pour terrain=on, de 0.1 à 5, défaut 1. Un 400 sans terrain=on. |
profile | requête | energy, agriculture, remote ou mining. Un préréglage de composition, pas un style. |
Retourne application/json : un style complet avec sources, layers, glyphs,
sprite et metadata. Cache-Control: private, no-store : le document contient la clé
d'API et le modèle d'URL des tuiles de ce déploiement.
Aussi 400 invalid_theme pour un code de thème qui ne se décode pas, avec un tableau detail · 400 bad_request pour un identifiant de superposition ou un profil inconnu · 404 le nom du style ne
résout pas · 503 texte brut basemap release is misconfigured lorsque la publication active
n'est pas un identifiant à huit chiffres ou que son objet manque, avec
Cache-Control: private, no-store. L'archive précédente n'est pas servie.
GET /tiles/{z}/{x}/{y}
Le fond de carte mondial, en octets Mapbox Vector Tile. Lu par plage depuis le stockage objet, jamais par le calcul, ce qui en fait la chose la plus rapide ici.
z, x, y sont des entiers de chemin. ?key= est obligatoire.
Retourne application/x-protobuf.
Aussi 204 la requête est dans l'archive mais il n'y a pas de tuile là. Cette réponse n'est pas écrite dans le cache du Worker · 400
texte brut invalid tile coordinates pour un non-entier, ou pour une colonne hors de 0 .. 2^z-1 · 503 texte brut
basemap release is misconfigured lorsque la publication active n'est pas un identifiant à
huit chiffres ou que son objet manque, Cache-Control: private, no-store, et l'archive
précédente n'est pas servie.
GET /tiles/{release}/{z}/{x}/{y}
La même tuile, épinglée à une publication de fond de carte à 8 chiffres. Le chemin sans
date suit l'archive active. Par défaut, il s'agit du planet du 22 septembre 2026. Un identifiant à huit
chiffres qui n'a jamais été copié est un 404 en texte brut basemap release not found
avec Cache-Control: private, no-store. Un identifiant qui n'a pas huit chiffres a le même
corps sans cet en-tête de cache. Si l'archive active a été basculée vers une publication
absente du serveur, le style et le chemin sans date répondent 503
basemap release is misconfigured, eux aussi private, no-store, et ne servent pas
l'extrait du Canada. Réessayer ne le rétablit pas.
Retourne application/x-protobuf. Aussi 204 pas de tuile, non écrite dans le cache du Worker · 400 texte brut invalid tile coordinates pour un non-entier, ou pour une colonne hors de 0 .. 2^z-1.
GET /terrain/{version}/{z}/{x}/{y}
Relief Terrarium/512 à z0–12. /terrain/6/{z}/{x}/{y}.webp sert
Mapterhorn mondial. /terrain/4/{z}/{x}/{y}.png sert le MNEMR canadien.
/coverage.json indique la publication active. Les URL
versionnées identifient leur propre archive; une publication inconnue ou un suffixe incompatible
donne 404 JSON not_found. XYZ hors grille donne 400 texte brut invalid tile coordinates.
Retourne image/webp ou image/png, selon la représentation. Aussi 204 sans données,
non mis en cache · 404 terrain archive not configured · 503
publication active indisponible, sans repli automatique · 502 erreur de lecture de tuile.
GET /contours/{version}/{z}/{x}/{y}
Courbes canadiennes du MNEMR-30, de z9 à z13, sans ligne de 0 m. La version est
actuellement 4, en cache public, max-age=86400. Une version qui n'est pas un petit entier est un 400 en texte
brut invalid tile coordinates.
Retourne application/x-protobuf. Aussi 204 pas de tuile dans une archive configurée, non écrite dans le cache du Worker · 404 JSON not_found, contour archive not configured.
GET /glyphs/{version}/{fontstack}/{range}.pbf
Glyphes de police, par exemple Noto Sans Regular/0-255.pbf. Inclut les fontes qui
dessinent les syllabiques. La version est actuellement 2. Une réponse réussie est en cache
public, max-age=31536000, immutable. Non facturé.
Retourne application/x-protobuf. Aussi 400 en texte brut invalid fontstack, invalid range, ou invalid asset version · 404 en texte brut not found quand l'objet est absent, sans cet en-tête de cache.
GET /sprite/{version}/{file}
Feuille de sprites, .json ou .png, avec variantes @2x. Les feuilles sont light,
dark, muted-light et muted-dark. La version est actuellement 2, en cache
public, max-age=31536000, immutable. Non facturé.
Retourne application/json ou image/png. Aussi 400 en texte brut invalid sprite, ou invalid asset version · 404 en texte brut not found, sans cet en-tête de cache.
Catalogue et données
GET /layers
Le catalogue complet. Les clés d'objets de stockage ne sont jamais exposées; une couverture incomplète l'est toujours.
Retourne application/json, un tableau de :
{
"id": "energy.wells",
"display_name": { "en": "Wells", "fr": "Puits" },
"namespace": "energy",
"source": "…",
"source_url": "…",
"licence": "…",
"attribution": "…",
"coverage": "…",
"resolution": "…",
"updated_at": "2026-09-10",
"source_updated_at": "…",
"ingestion_version": "1",
"schema_version": "1",
"freshness_policy": "…",
"known_gaps": "…",
"addon": "energy",
"archives": [{ "id": "default", "minzoom": 4, "maxzoom": 12 }],
"source_layer": "wells"
}Une archive contenant plus d'une couche vectorielle porte aussi source_layers, la liste
complète. Les grilles d'arpentage s'en servent : survey.dls empile seize niveaux dans un
fichier et survey.nts quatre, chacun avec sa plage de zoom, pour qu'un client ajoute
exactement le niveau voulu. Voir Couches.
Lisez known_gaps avant de promettre une couverture à un utilisateur. C'est rédigé pour
être exact plutôt que flatteur : plusieurs couches ne couvrent qu'une province.
GET /layers/{id}
Une fiche du catalogue, même forme. Aussi 404 JSON not_found unknown layer.
GET /layers/{id}/{z}/{x}/{y}
Tuiles de superposition pour une couche. ?key= est obligatoire.
Retourne application/x-protobuf.
Aussi 204 hors de la plage de zoom, ou pas de tuile. Cette réponse n'est pas écrite dans le cache du Worker · 403 module requis · 404 JSON not_found : unknown layer quand l'identifiant n'est pas au catalogue, ou layer archive not configured quand l'objet n'est pas dans le stockage.
GET /identify
Quelles entités du catalogue contiennent un point. C'est le gestionnaire de clic d'une
carte, et ce n'est pas du géocodage inverse :
/geocode/reverse trouve les lieux nommés les plus proches,
identify retourne les polygones qui contiennent le point.
| Paramètre | Où | Notes |
|---|---|---|
at | requête, obligatoire | lng,lat. |
layers | requête | Identifiants identifiables, séparés par des virgules. municipalities par défaut, qui est du noyau : une clé sans module fonctionne quand même. |
geometry | requête | true pour inclure le polygone de chaque résultat, si la fiche en a un. |
Retourne application/json :
{
"at": [-114.0719, 51.0447],
"results": [
{ "layer": "municipalities", "id": "ab:calgary", "name": "Calgary", "province": "AB" }
]
}Un résultat porte les champs de sa couche : unit et survey_system sur les cellules
d'arpentage, uwi, licence, operator et status sur les fiches énergie, pid sur
les parcelles, geometry si demandé.
Aussi 400 point ou couche invalide · 403 module requis · 502 / 503 le service
est injoignable ou en train de démarrer.
GET /data/query
Toutes les entités d'une couche dans un cadre englobant. Une couche par appel, par choix.
| Paramètre | Où | Notes |
|---|---|---|
layer | requête, obligatoire | Un identifiant interrogeable du catalogue. |
bbox | requête, obligatoire | minlng,minlat,maxlng,maxlat. Un filtre strict : rien en dehors n'est jamais retourné. |
limit | requête | 1 à 50, 50 par défaut. Une valeur non numérique retombe sur la valeur par défaut plutôt que d'échouer. |
geometry | requête | true pour inclure la géométrie. |
Retourne application/json : { "layer": …, "bbox": [4], "results": [ … ] }, les
résultats ayant la même forme que pour /identify.
Aussi 400 couche inconnue ou bbox mal formée · 403 module requis · 501 la
couche existe mais n'est offerte qu'en tuiles, avec les identifiants interrogeables
nommés dans le message.
Géocodage
Une seule URL lit la forme de votre requête et l'achemine. Vous ne choisissez pas de
service, et profile= n'a aucun effet ici : il compose des cartes, pas des recherches.
| Ressemble à | Exemple | Exige |
|---|---|---|
| Adresse civique ou lieu | Calgary | noyau |
| Terres légales, ARD ou SNRC | NW-25-24-1-W5 | legal-land |
| Identifiant de puits | 00/07-10-013-09W4/0 | energy |
| PID de la C.-B. | 010-867-813 | agriculture |
| Installation par son nom | Kaybob South avec layers=facility | energy |
| Route rurale ou poste restante | RR 2 Okotoks | noyau |
GET /geocode/search
| Paramètre | Où | Notes |
|---|---|---|
q | requête, obligatoire | Le texte recherché. |
lang | requête | Dans quelle langue rendre name, en par défaut. Chaque résultat porte aussi toutes ses langues sous names. |
limit | requête | 1 à 50, 10 par défaut. |
bbox | requête | Un filtre strict, pas une pondération. |
layers | requête | Types de résultats civiques admis (address, street, locality, region, poi), ou well / facility pour chercher dans l'énergie. Les deux ensembles ne se mélangent pas, et une valeur inconnue donne un 400. |
focus | requête | lng,lat. Préférence de proximité souple : elle réordonne, elle n'exclut pas. |
region | requête | Province ou territoire, n'importe quelle graphie. Exclut les fiches d'une autre province; conserve celles qui n'en portent pas. |
geometry | requête | true pour inclure le polygone d'arpentage. |
Retourne application/json, un tableau de lieux :
[
{
"id": "…",
"name": "Iqaluit",
"layer": "locality",
"lng": -68.5170,
"lat": 63.7467,
"score": 18.4,
"names": { "en": "Iqaluit", "iu": "ᐃᖃᓗᐃᑦ" }
}
]Chaque résultat porte aussi source et source_id (le jeu de données d'où il provient),
match_type (exact, partial, fallback, unknown), precision (point, street,
locality, region, unknown) et, quand la correspondance n'est pas exacte, match_reasons.
Voir métadonnées de résultat; la règle à retenir
est qu'une rue ou une ville qui tient lieu d'adresse est toujours fallback, jamais exact.
Un résultat peut aussi porter distance (en mètres), category, address,
legal_land, uwi, licence, operator, status, pid, bbox et geometry, selon
ce qui a correspondu.
Aussi 400 q manquant, une valeur layers ou region inconnue, un focus mal formé, ou
une requête faite de termes de livraison sans collectivité · 403 module requis pour les
grammaires LSD, UWI ou PID.
Une analyse réussie sans fiche correspondante retourne []. Jamais un centroïde inventé,
et jamais un repli silencieux sur le classement des adresses.
GET /geocode/structured
| Paramètre | Où | Notes |
|---|---|---|
address | requête | Ligne de rue : numéro civique et nom de rue. |
city | requête | Nom de la municipalité. |
region | requête | Province ou territoire, n'importe quelle graphie, normalisée en code. |
postalcode | requête | Avec ou sans l'espace. Ce n'est pas une validation de distribution. |
country | requête | CA uniquement. |
lang, limit, bbox, layers, focus | requête | Comme pour la recherche. |
Au moins un de address, city ou postalcode est requis. address et city récupèrent et
classent; region et postalcode restreignent, en excluant les fiches qui les contredisent et en
conservant celles qui n'en disent rien. Civique seulement : les grammaires de terre légale, de
parcelle et d'énergie sont des formes de chaîne plein texte et ne sont pas détectées ici.
Retourne le même tableau de lieux que la recherche.
Aussi 400 aucun champ d'ancrage, une province inconnue, un code postal mal formé, un pays
autre que CA, ou un address qui est un numéro civique sans nom de rue.
GET /geocode/autocomplete
Saisie assistée, même acheminement que la recherche. q obligatoire; lang en par
défaut; limit 1 à 50, 8 par défaut. Retourne le même tableau.
GET /geocode/nearby
Lieux d'une catégorie autour d'un point.
| Paramètre | Où | Notes |
|---|---|---|
category | requête, obligatoire | De une à huit, séparées par des virgules. Un identifiant de taxonomie (health.pharmacy) ou un mot courant en français ou en anglais (pharmacie, pharmacy). Casse, accents et traits d'union ignorés. |
near | requête | lng,lat. Exactement un de near et bbox est requis. |
bbox | requête | Ancre au centre du cadre avec un rayon qui le couvre. « Dans les environs », pas un rectangle de découpe. |
radius | requête | Mètres, 50 à 50000, 5000 par défaut. Un rayon explicite l'emporte sur celui déduit du bbox. |
limit | requête | 1 à 50, 10 par défaut. |
lang | requête | en par défaut. |
Retourne le même tableau, avec distance en mètres.
Aussi 400 une catégorie inconnue, nommée dans le message, les deux ou aucun de
near et bbox, ou une longitude ou une latitude hors du WGS84 (bad_request) · 422
outside_coverage quand l'ancrage, ou le centre du bbox, est hors du Canada.
GET /geocode/reverse
Ce qui se trouve près d'une coordonnée, trié par distance géodésique réelle. near=lng,lat
est obligatoire. lang en par défaut; limit 1 à 50, 5 par défaut.
Aussi 400 un near absent, ou une longitude ou une latitude hors du WGS84 (bad_request) · 422
outside_coverage quand la coordonnée est hors du Canada. Le corpus n'est pas interrogé.
Un tableau vide signifie que le point est au Canada et que rien dans le corpus n'est proche.
POST /geocode/batch
Jusqu'à 100 recherches directes en une requête. Contrôles partagés seulement.
| Paramètre | Où | Notes |
|---|---|---|
queries | corps, obligatoire | Tableau de 1 à 100 chaînes, ordre conservé. Les entrées vides deviennent [] et ne sont pas facturées. |
lang, limit, layers, focus, region, bbox | corps | Comme pour la recherche. |
Retourne un tableau de tableaux de lieux, aligné sur queries. L'index i est ce que GET /geocode/search retournerait pour cette chaîne. Chaque requête non vide compte pour un incrément geocode.
Aussi 400 queries manquant ou vide, ou contrôles partagés invalides · 413 plus de 100 requêtes · 429 allocation restante inférieure au nombre de requêtes non vides.
Voir Géocodage par lots et l'exemple.
Routage
GET /route
D'un point à un autre sur le graphe canadien.
| Paramètre | Où | Notes |
|---|---|---|
from | requête, obligatoire | lng,lat. Origine. /route et /isochrone utilisent chacun un paramètre par point. |
to | requête, obligatoire | lng,lat. |
mode | requête | auto, car, bicycle, pedestrian, truck ou transit, auto par défaut. transit exige depart_at. car et auto sont le même profil. Toute autre valeur est un 400; rien ne retombe silencieusement. |
depart_at | requête | Instant de départ ISO 8601, obligatoire pour mode=transit. Voir Routage de transport en commun pour la couverture. |
use_highways | requête | 0 à 1, 0,5 par défaut. 0 évite autoroutes et voies rapides, 1 les privilégie. Modes motorisés seulement. |
use_hills | requête | 0 à 1. 0 évite les montées même si le trajet s'allonge, 1 y est indifférent. Omise, c'est la valeur par défaut de Valhalla qui s'applique, et elle varie selon le mode : 0,25 sur bicycle, 0,5 sur pedestrian. Vélo et marche seulement ; la conduite n'a aucun terme de pente. |
Les paramètres de camion ne s'appliquent qu'avec mode=truck. En envoyer un sur un autre
mode est un 400, pas un oubli silencieux.
| Paramètre | Défaut | Plage | Unité |
|---|---|---|---|
height | 4,11 | jusqu'à 10 | mètres |
width | 2,6 | jusqu'à 6 | mètres |
length | 21,64 | jusqu'à 50 | mètres |
weight | 21,77 | jusqu'à 100 | tonnes brutes |
axle_load | 9,07 | 0 à 40 | tonnes par essieu |
axle_count | 5 | 2 à 20 | essieux |
hazmat | false | booléen | évite les routes qui l'interdisent |
use_truck_route | 0 | 0 à 1 | privilégier les routes de camionnage |
Retourne application/json :
{ "distanceMeters": 42731, "durationSeconds": 2184, "geometry": { … } }.
Aussi 400 mode inconnu, une option de camion sur un autre mode, ou une coordonnée hors du
WGS84 (invalid_location) · 422 outside_coverage quand une extrémité est hors du Canada,
no_route quand le graphe canadien ne peut pas relier ces deux points.
GET /isochrone
Plages de temps de trajet depuis un point, donné sous la forme near=lng,lat.
minutes est obligatoire : plages séparées par des virgules, fractions acceptées, au plus
quatre plages d'au plus 120 minutes chacune. Mêmes mode, depart_at, use_highways, use_hills
et paramètres de camion que /route; mode=transit exige depart_at.
Retourne application/geo+json, une FeatureCollection avec un polygone par plage. Une plage
en transport en commun peut être un MultiPolygon.
Aussi 400 plus de quatre plages, une plage de plus de 120 minutes, ou une coordonnée hors
du WGS84 (invalid_location), avec la règle nommée. 422 outside_coverage quand le centre
est hors du Canada, ou en mode=transit quand aucun service prévu ne le dessert. Un centre
canadien que le moteur refuse donne un 502.
Vos propres données
Dix superpositions par compte, 5 Mo chacune. Voir Vos propres données.
| Route | Fait |
|---|---|
POST /byod | Téléverse application/geo+json, application/vnd.pmtiles, ou multipart/form-data avec un champ file. ?name= fixe le nom affiché quand le corps n'est pas multipart. Retourne 201. |
GET /byod | Vos superpositions et le quota courant. |
GET /byod/{id} | Les métadonnées d'une superposition. |
GET /byod/{id}/data | Les octets stockés. |
GET /byod/{id}/{z}/{x}/{y} | Tuiles, pour un téléversement PMTiles. Exige ?key=. |
DELETE /byod/{id} | La supprime. 204, sans corps. |
Une superposition est { id, name, kind, bytes, createdAt, url, overlay }, où overlay
est le jeton byod:<id> que vous passez à ?overlays=.
Aussi 400 corps manquant, mauvais type, plus de 5 Mo, ou un onzième fichier · 404
identifiant inconnu, ou appartenant à un autre compte.
Supprimer une superposition qu'un style nomme encore laisse ce ?overlays=byod:<id> en
404 : mettez le style à jour d'abord.
Autres API
Le reste de la surface, une ligne chacun. Chaque entrée pointe vers la page qui la documente correctement.
Lieux · page complète
| Route | Paramètres | Rôle |
|---|---|---|
GET /places/search | q (obligatoire), limit 1 à 50 (défaut 10), lang, bbox | Trouver des lieux par nom. Retourne { data, meta }. |
GET /places/nearby | category (obligatoire), near=lng,lat ou bbox, radius 50 à 50000 m (défaut 5000), limit 1 à 50 (défaut 10), lang | Lieux d'une catégorie près d'un point. Porte distance en mètres. |
GET /places/{id} | id dans le chemin (um:place:…), lang optionnel | Un lieu. Un identifiant mal formé donne un 404 not_found, pas un 400. |
Un q absent donne un 400 { "error": "q is required", "code": "bad_request" }. Un coin de bbox hors du WGS84 donne un 400 bad_request. En recherche, un cadre hors du Canada reste un filtre. Pour nearby, un ancrage hors du Canada, ou un bbox dont le centre est hors du Canada, donne un 422 outside_coverage.
Transport en commun · page complète
| Route | Paramètres | Rôle |
|---|---|---|
GET /transit/agencies | aucun | Toutes les sociétés de transport du jeu de flux déployé. |
GET /transit/stops | near=lng,lat (obligatoire), radius 50 à 10000 m (défaut 1000), limit 1 à 100 (défaut 20) | Arrêts près d'un point, du plus proche au plus loin. |
GET /transit/stops/{id} | id dans le chemin | Un arrêt. |
GET /transit/stops/{id}/departures | at (instant ISO 8601 avec Z ou un décalage, défaut maintenant), window 1 à 240 minutes (défaut 60), limit 1 à 200 (défaut 50) | Départs prévus à l'horaire. Horaire, pas temps réel. |
GET /transit/routes/{id} | id dans le chemin | Une ligne. |
Ski
Derrière le module Ski : une clé payante sans ce module reçoit 403 addon_required, et une clé du forfait dev reçoit dev_only depuis une origine de production ou usage_limit_reached une fois ses appels premium du mois épuisés. Le module ne peut pas encore être acheté; d'ici là, seules les clés de développement et internes y accèdent.
| Route | Paramètres | Rôle |
|---|---|---|
GET /ski/areas | province (code à deux lettres), activity (downhill ou nordic), bbox, q (nom) | Domaines skiables canadiens tirés d'OpenStreetMap, triés par identifiant. Renvoie { data, meta }; meta.data_version nomme la version et meta.attribution doit être affichée (ODbL). |
GET /ski/areas/{id} | id dans le chemin | Un domaine. Un identifiant inconnu donne 404 not_found. |
GET /ski/areas/{id}/lifts-3d | id dans le chemin | Les remontées du domaine avec leurs hauteurs précalculées pour les moteurs 3D : data.lifts[] avec stations, pylons et un cable qui fléchit, chaque point [lng, lat, z] en mètres au-dessus du niveau de la mer, tiré de la version du relief nommée par data.terrain_release. Un domaine sans remontée donne une liste vide; un identifiant inconnu donne 404 not_found. |
Altitude · page complète
| Route | Paramètres | Rôle |
|---|---|---|
GET /elevation | near=lng,lat, ou points : jusqu'à 1000 paires lng,lat séparées par une barre verticale, sous réserve de la limite URL de 16 Ko | Altitude du MNE. Retourne { elevations, units, datum, resolution, meta }. La version mondiale mélange modèles de terrain et de surface et datums; ce n'est pas un MNT uniforme du sol nu. null signifie absence de données ou coordonnée hors de Web Mercator. Zéro est une valeur et peut représenter le remplissage océanique. Un appel quel que soit le nombre de points. Archive non configurée : 404; version sélectionnée indisponible : 503, sans repli. |
Fuseau horaire · page complète
| Route | Paramètres | Rôle |
|---|---|---|
GET /timezone | lat, lon, at optionnel (ISO 8601) | Fuseau IANA et décalage UTC. Un appel. Les points en mer sont des zones Etc/GMT. |
GET /timezone/meta | aucun | Versions IANA et des limites actives. Authentifié, non facturé. |
Événements routiers · page complète
| Route | Paramètres | Rôle |
|---|---|---|
GET /incidents | jurisdiction, bbox, near=lng,lat, radius jusqu'à 500000 m, type, severity, status, updated_since, limit 1 à 500 (défaut 100) | Tous les événements routiers en cours. La Colombie-Britannique et l'Alberta aujourd'hui. |
GET /closures | identiques | Le sous-ensemble où une route est réellement fermée. |
GET /road-conditions | identiques | Le sous-ensemble portant un état de la chaussée. |
Expansion des itinéraires · page complète
| Route | Corps | Rôle |
|---|---|---|
POST /matrix | origins: [[lng,lat]], destinations: [[lng,lat]], plus les options de coût partagées | Durées et distances pour chaque paire. Une paire que le moteur n'a pas pu relier donne une cellule null, et non l'échec de la requête. |
POST /match | coordinates: [[lng,lat]] | Accrocher une trace GPS au réseau routier. Retourne un itinéraire. |
POST /optimized-route | stops: [[lng,lat]] | L'ordre de visite des arrêts, plus l'itinéraire. Le premier et le dernier sont fixes. |
POST /route | from: [lng,lat], to: [lng,lat], avoid_areas | Le GET ci-dessus avec un corps, pour avoid_areas. Même validation, mêmes réponses. |
POST /isochrone | near: [lng,lat], minutes: [5,10,15], mode, depart_at, avoid_areas | Le GET ci-dessus avec un corps. |
GET /routing/status | aucun | Fraîcheur du graphe et âge des flux de restrictions. Répond 200 même quand l'itinéraire est indisponible. Jamais compté. |
Optimize · page complète
Planification de tournées utilisant les formats OptimizeToursRequest et OptimizeToursResponse
de Google Route Optimization, pour les champs pris en charge. Sur ces chemins,
les erreurs suivent la forme de Google, { "error": { "code", "message", "status", "details" } },
avec le code de la passerelle à côté. Des plafonds par forfait limitent les envois,
les véhicules, les lieux, le timeout de la résolution (ramené au plafond, avec un en-tête
Warning) et les résolutions simultanées; les avertissements passent par l'en-tête
X-Unmap-Optimize-Warnings.
| Route | Corps | Rôle |
|---|---|---|
POST /optimize | model: { shipments, vehicles }, timeout, solvingMode | Affecte les envois aux véhicules et ordonne chaque tournée. solvingMode: VALIDATE_ONLY ne fait que valider. Ce n'est pas /optimized-route, qui ordonne les arrêts d'un seul véhicule. |
POST /v1/projects/{project}:optimizeTours | identique | Chemin REST compatible avec Google. Remplacez l'hôte et les identifiants, et vérifiez les champs pris en charge. {project} est ignoré. |
POST /v1/projects/{project}/locations/{location}:optimizeTours | identique | Le même, avec un emplacement, lui aussi ignoré. |
POST /projects/{project}:optimizeTours | identique | Le chemin GMPRO sans /v1. |
POST /projects/{project}/locations/{location}:optimizeTours | identique | Le même, avec un emplacement. |
Signalements · page complète
| Route | Rôle |
|---|---|
POST /feedback | Signaler une donnée erronée. Jamais compté. |
POST /places/{id}/feedback | Le même signalement, rattaché à un lieu. |
Codes de statut
| Code | Signifie |
|---|---|
200 | Succès. |
201 | Créé, sur POST /byod. |
204 | Pas une erreur. Une tuile dans l'archive qui est servie, sans donnée à cette case. Une archive de relief ou de courbes manquante est un 404, pour qu'une mauvaise configuration ne se lise pas comme un terrain vide. Une publication de fond de carte absente est un 503 en texte brut, pas un 204. |
400 | Paramètre invalide, code bad_request sauf si un code plus précis s'applique. Une longitude ou une latitude hors du WGS84 est bad_request en géocodage et pour les lieux, et invalid_location en itinéraire. Le message nomme la règle. |
401 | Pas de clé, ou une clé inconnue ou désactivée. Une clé absente sur un chemin inconnu a aussi ce statut, l'authentification précédant le routage. Avec une clé, ce chemin est un 404 not_found. |
413 | Plus de 100 requêtes sur POST /geocode/batch, ou un corps de plus de 4 Mio sur Optimize. |
403 | La clé est valide mais n'a pas le module requis. Le corps le nomme. |
404 | JSON not_found : style, couche ou lieu inconnu; layer archive not configured quand l'objet d'une couche du catalogue n'est pas dans le stockage; archive de terrain ou de courbes de niveau non configurée; ou chemin que cette passerelle ne sert pas. Un chemin sans correspondance sous /tiles, /terrain, /contours, /layers, /glyphs ou /sprite reste du texte brut. |
422 | outside_coverage quand un ancrage est hors du Canada sur /route, /isochrone, /matrix, /match, /optimized-route, ou une recherche inverse ou à proximité. no_route quand une requête canadienne n'a pas de chemin. Optimize utilise 400 FAILED_PRECONDITION pour les envois obligatoires injoignables. |
429 | Limite de débit atteinte. Lisez Retry-After. |
501 | /data/query seulement : la couche existe mais n'est offerte qu'en tuiles. Le message liste les identifiants interrogeables. |
502 | Un échec en amont. Le code est upstream_error : un point de terminaison d'itinéraire répond { "error": "route failed", "code": "upstream_error" }, et sur /elevation une tuile de relief qui ne se décode pas est { "error": "elevation sample failed", "code": "upstream_error" }. |
503 | Un service est injoignable ou en train de démarrer. Réessayez le 503 JSON qui porte Retry-After. Le 503 en texte brut basemap release is misconfigured n'en a pas : l'archive précédente n'est pas servie, et une nouvelle requête ne la rétablit pas. |
504 | Les trajets routiers ou la réponse du solveur d'Optimize ont dépassé leur temps alloué. Voir les erreurs d'Optimize. |
La plupart des corps d'erreur JSON sont { "error": "…", "code": "…" }, avec addon et capability le
cas échéant. Optimize utilise l'objet error structuré décrit ci-dessus. Une requête mal formée de tuile, de relief, de courbes, de glyphe ou de sprite répond
en texte brut. Une archive de relief ou de courbes non configurée est un JSON not_found. /elevation utilise terrain archive not configured dans ce cas. Voir
Erreurs pour la liste complète.