Aller au contenu principal
EN

Signaler un problème

Cette page ne porte pas sur un seul arrêt, une seule ligne, station ou un seul véhicule. Ouvrez-en un pour que le signalement le nomme, ou utilisez le signalement complet.

Ce qui s’est passé
Signalement complet Aucun compte requis
Preuves et données
  1. Lecture
  2. Preuves et données
  3. API pour développeurs

Chaque chiffre de ce site est à un appel JSON gratuit.API pour développeurs

Chaque chiffre ici est du JSON versionné. Gratuit, avec ou sans clé.Chaque chiffre ici est du JSON versionné. Gratuit, avec ou sans clé.

Gratuit, clé facultative · 1 000 par jour, 60 par minute · code MIT · version 1.0.0

Accès

Gratuit

clé facultative

Limite de débit

1 000 par jour

60 par minute; plus avec Développeur

Licence du code

MIT

les données gardent les conditions de leur source

Version

1.0.0

un changement majeur reçoit un nouveau chemin

Forfaits

Gratuit

1 000 appels par jour, 60 par minute. Aucune clé requise; une clé gratuite compte vos appels séparément de ceux des autres sur votre réseau.

Mentionnez « Données : OTranspo (otranspo.ca) » partout où vous affichez les données.

Développeur

10 $ par moisou 100 $ par an (CAD)

  • 100 000 appels par jour, 600 par minute
  • Téléchargements en lot et historique complet
  • Soutien par courriel

Journalistes, étudiants et personnel municipal : le forfait gratuit est pour vous. Écrivez-nous si vous avez besoin de plus pour un reportage ou une étude.

Comment envoyer une clé

curl -H "Authorization: Bearer otr_…" https://otranspo.ca/api/public/v1/route-states

Limites

Chaque réponse porte X-RateLimit-Remaining (cette minute) et X-RateLimit-Daily-Remaining (aujourd’hui, UTC). Au-delà de la limite, vous recevez 429 avec l’heure de réinitialisation.

Un appel, du début à la fin

Requête

curl https://otranspo.ca/api/public/v1/route-states

La réponse est la vraie, tirée de ce site au moment où vous la demandez.

Réponse, abrégée Schéma

En cours…

Toutes les ressources, 39

Les chemins commencent par /api/public/v1 sauf indication complète. Ouvrez une ligne pour ses statuts HTTP, codes d’erreur, accès, incertitude et schéma.

Index et contratcommencez ici2
Index de l’APIGET/api/public/v1—JSON

Statut HTTP

200

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

endpoints.id · endpoints.path

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1

JSON Schema

Contrat OpenAPI 3.1GET/openapi.json—JSON

Statut HTTP

200

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

operationId · path

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/openapi.json

JSON Schema

Service en ce momentce qui se passe cette minute5
Annulations affichées en ce momentGET/current-cancellations—JSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

unsupported_query 400 · current_cancellations_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

trips.tripId · trips.routeId

Source et incertitude

Seules les annulations ou suppressions explicites du flux courant sont listées. Un flux vide ou indisponible ne prouve pas l’absence d’annulations; les avis hors horaire peuvent être omis.

Exemple d’appel

GET /api/public/v1/current-cancellations

JSON Schema

États des lignes : horaire et vusGET/route-states—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

operatorId · routeId

Source et incertitude

Comparaison entre l’horaire et les véhicules observés; ce n’est pas une alerte d’un exploitant. Les routes sans positions publiées sont indiquées explicitement.

Exemple d’appel

GET /api/public/v1/route-states

JSON Schema

Incidents, en anglais et en françaisGET/incidents—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

publicId · slug · updates.id

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/incidents

JSON Schema

Un avis officielGET/alerts/{alertId}format=json|csv · alertIdJSON · CSV

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_alert_id 400 · unsupported_format 400 · alert_not_found 400 · alert_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

alert.id · alert.operatorId

Source et incertitude

The notice is the operator’s own wording. Kept wordings start when we first saw the notice, not when the operator posted it, and an empty list does not prove the notice never changed.

Exemple d’appel

GET /api/public/v1/alerts/{alertId}

JSON Schema

Tableau d’une stationGET/stations/{stationId}format=json|csv · stationIdJSON

Statut HTTP

200 · 400 · 404 · 503

Codes de motif d’erreur

invalid_station_id 400 · unsupported_format 400 · station_not_found 404 · station_board_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

station.id · lines.routeRecordId · departures.tripId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/stations/{stationId}

JSON Schema

Preuves et rapportsles chiffres derrière chaque page11
Preuves de fiabilitéGET/reliability-evidenceformat=json|csvJSON · CSV

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

unsupported_format 400

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

routeId · window

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/reliability-evidence

JSON Schema

Preuves par ligneGET/routes/{routeId}/evidenceformat=json|csv · routeIdJSON

Statut HTTP

200 · 400 · 404 · 503

Codes de motif d’erreur

invalid_route_id 400 · unsupported_format 400 · route_not_found 404 · route_evidence_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

route.routeId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/routes/{routeId}/evidence

JSON Schema

Preuves du circuit 7 sur le site

Service d’une ligne par jourGET/routes/{routeId}/service-evidencewindow=day|week|month|28d · date · format=json|csv · routeIdJSON

Statut HTTP

200 · 400 · 404 · 503

Codes de motif d’erreur

invalid_route_id 400 · unsupported_window 400 · invalid_service_date 400 · unsupported_format 400 · route_not_found 404 · route_service_evidence_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

routeId · window

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/routes/{routeId}/service-evidence

JSON Schema

Service d’une station ou d’un quartierGET/places/{kind}/{placeId}/service-evidencedate · kind=station|ward · placeIdJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

unsupported_place_kind 400 · invalid_place_id 400 · unsupported_query 400 · invalid_service_date 400 · place_service_evidence_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

kind · placeId · operatorId

Source et incertitude

La couverture d’observation et des annulations reste non vérifiée; les décomptes inconnus restent à null et la comparaison est désactivée.

Exemple d’appel

GET /api/public/v1/places/{kind}/{placeId}/service-evidence

JSON Schema

Téléchargement d’une preuveGET/evidence/{evidenceId}format=json|csv · evidenceIdJSON · CSV

Statut HTTP

200 · 400 · 404

Codes de motif d’erreur

unsupported_format 400 · not_found 404

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

evidenceId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/evidence/{evidenceId}

JSON Schema

Fiches de quartierGET/ward-scorecardsformat=json|csvJSON · CSV

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

snapshotId · wardId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/ward-scorecards

JSON Schema

Éditions passées des fichesGET/historical-scorecardssnapshotId=historical-scorecards:<sha256> · routeIdJSON

Statut HTTP

200 · 400 · 404 · 422

Codes de motif d’erreur

snapshot_id_required 400 · invalid_route_id 400 · invalid_parameters 400 · snapshot_not_found 404 · route_detail_not_published 422 · route_not_in_snapshot 404

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

snapshotId · routeId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/historical-scorecards

JSON Schema

Archives des rapports de serviceGET/service-report-archivekindJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_archive_query 400 · archive_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

kind · period

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/service-report-archive

JSON Schema

Exactitude des prédictionsGET/prediction-calibration—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

operatorId · routeId · routeContext · horizonBucket

Source et incertitude

Une arrivée observée plus tard sert de comparaison, pas de vérité terrain ni d’intervalle validé; aucune validation indépendante n’est revendiquée.

Exemple d’appel

GET /api/public/v1/prediction-calibration

JSON Schema

Rapport de service sélectionnéGET/api/insights/reports/selected?period={period}&date={YYYY-MM-DD}period=day|week|month · date=YYYY-MM-DD · operator=all|oc_transpo|sto · routeJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_selection 400 · selected_report_unavailable 503 · invalid_route_hour_selection 400 · route_hours_unavailable 503

Accès et limite de débit

Anonyme; aucune limite public-api configurée pour ce chemin.

Identifiants stables

period · date · operator · method

Source et incertitude

Le statut, la méthode, l’origine et les lacunes distinguent un calcul sélectionné d’une publication originale conservée.

Exemple d’appel

GET /api/insights/reports/selected?period={period}&date={YYYY-MM-DD}

JSON Schema

Données de comparaison des prédictionsGET/api/insights/reports/selected/comparison-evidence?period={period}&date={YYYY-MM-DD}period=day|week|month · date=YYYY-MM-DD · operator=all|oc_transpo|stoJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_comparison_evidence_selection 400

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

payload.edition · payload.selection · checksum.value

Source et incertitude

This opt-in export preserves the exact captured route/day read results, declared calendar, comparison refusals and measured source-code manifest. It is bounded to 20,000 input rows and 8 MiB and does not claim an atomic database snapshot, statistical independence, confidence intervals, physical service delivery, causation, equivalence or model eligibility. Schema validation alone does not verify checksum or replay; consumers must perform those checks separately.

Exemple d’appel

GET /api/insights/reports/selected/comparison-evidence?period={period}&date={YYYY-MM-DD}

JSON Schema

Historique et rejeuce qui s’est déjà passé6
Annulations passées et lacunesGET/historical-cancellationswindow=day|week|28d|month · date · assessment=noneJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

unsupported_query 400 · unsupported_window 400 · invalid_service_date 400 · unsupported_assessment 400 · historical_cancellations_unavailable 503 · historical_cancellation_limit_exceeded 400

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

period · records.tripId

Source et incertitude

La complétude des captures historiques n’est pas vérifiée et le rapprochement horaire peut ne pas être évalué; une couverture inconnue ne signifie pas zéro annulation.

Exemple d’appel

GET /api/public/v1/historical-cancellations

JSON Schema

Rejeu de la villeGET/replaydate · routeFamily · operator · fromMinute · minutes · summaryJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

date_required 400 · invalid_route_family 400 · invalid_operator 400 · replay_positions_unavailable 503 · published_replay_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

date · routeFamily · operator

Source et incertitude

Le rejeu est historique, jamais en direct, et dépend des archives capturées ou publiées.

Exemple d’appel

GET /api/public/v1/replay

JSON Schema

Véhicules vus, par jourGET/fleet-historydate · operator=all|oc_transpo|sto · route · feedIdJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_fleet_history_lookup 400 · invalid_fleet_history_date 400 · invalid_fleet_history_operator 400 · fleet_history_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

serviceDate · operator · route

Source et incertitude

Retained feed observations are not a physical fleet inventory; missing retention is not zero service.

Exemple d’appel

GET /api/public/v1/fleet-history

JSON Schema

Identifiants de véhicules du flux, par jourGET/fleet-history/feed-idsdate · operator=all|oc_transpo|sto · cursorJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_fleet_feed_id_selection 400 · invalid_fleet_history_date 400 · invalid_fleet_history_operator 400 · invalid_fleet_feed_id_cursor 400 · fleet_feed_id_census_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

date · operator · digest · collisionOrdinal

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/fleet-history/feed-ids

JSON Schema

Un identifiant de véhicule dans le tempsGET/vehicles/{vehicleId}/visibility-historyformat=json|csv · vehicleIdJSON

Statut HTTP

200 · 400 · 404 · 503

Codes de motif d’erreur

invalid_vehicle_id 400 · unsupported_format 400 · vehicle_history_unavailable 503 · vehicle_history_not_found 404

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

vehicleId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/vehicles/{vehicleId}/visibility-history

JSON Schema

Véhicules vus, en lotGET/bulk/fleet-historyfrom · to · operator=all|oc_transpo|sto · route · feedIdJSON

Statut HTTP

200 · 400 · 401 · 403 · 429 · 503

Codes de motif d’erreur

unsupported_query 400 · invalid_bulk_range 400 · invalid_fleet_history_lookup 400 · invalid_fleet_history_operator 400 · fleet_history_unavailable 503 · api_key_required 401 · invalid_api_key 401 · plan_required 403 · rate_limited 429

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

serviceDate · operator · route

Source et incertitude

Each line is the fleet-history evidence for one seven-day window; retained feed observations are not a physical fleet inventory and missing retention is not zero service.

Exemple d’appel

GET /api/public/v1/bulk/fleet-history

JSON Schema

Horaires et hors lignel’horaire publié6
Horaire d’une ligneGET/transit-planning/{routeId}date · routeIdJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_route_or_date 400 · use_history_for_past_dates 400 · planning_baseline_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

routeId · serviceDate

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/transit-planning/{routeId}

JSON Schema

Horaire du réseauGET/transit-planning/networkdateJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_parameters 400 · invalid_service_date 400 · network_baseline_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

serviceDate

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/transit-planning/network

JSON Schema

Tracé de rue entre deux pointsPOST/transit-planning/street-pathbodyJSON

Statut HTTP

200 · 400 · 503

Codes de motif d’erreur

invalid_body 400 · invalid_segment 400

Accès et limite de débit

Anonyme, origine de confiance requise; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

from · to

Source et incertitude

Les coordonnées servent à cette requête seulement; l’absence de tracé ne prouve pas l’absence d’un itinéraire accessible.

Exemple d’appel

POST /api/public/v1/transit-planning/street-path

JSON Schema

Paquets d’horaires hors ligneGET/offline-pack—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

offline_pack_not_published 503 · offline_pack_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

packId · digest

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/offline-pack

JSON Schema

Manifeste du paquet hors ligneGET/offline-pack/manifestpackJSON

Statut HTTP

200 · 404 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

packId · shards.id

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/offline-pack/manifest

JSON Schema

Morceau du paquet hors ligneGET/offline-pack/shards/{id}idbytes

Statut HTTP

200 · 404 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

id · digest

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/offline-pack/shards/{id}

JSON Schema

Registres et politiquesce que nous avons changé et pourquoi6
Registre des correctionsGET/correctionsformat=json|csvJSON · CSV

Statut HTTP

200 · 400

Codes de motif d’erreur

unsupported_format 400

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

records.id · records.revision

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/corrections

JSON Schema

Registre des politiquesGET/policy-register—JSON

Statut HTTP

200

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

records.id · records.revision

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/policy-register

JSON Schema

Assurance d’accessibilitéGET/accessibility-assurance—JSON

Statut HTTP

200

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

evidence.id · remediationLog.id

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/accessibility-assurance

JSON Schema

Couverture régionale et fraîcheurGET/regional-coverage—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

operators.operatorId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/regional-coverage

JSON Schema

Canaux de notification et d’aideGET/journey-service-policy—JSON

Statut HTTP

200

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

contractVersion · channels.channel

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/journey-service-policy

JSON Schema

Vérification de présentation des véhiculesGET/fleet-presentation—JSON

Statut HTTP

200 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

evidence.operatorSamples.operatorId

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/fleet-presentation

JSON Schema

Partageliens et cartes sociales3
Créer un lien de partagePOST/share-snapshotsbodyJSON

Statut HTTP

200 · 400 · 404 · 409 · 503

Codes de motif d’erreur

Invalid request body. 400 · A canonical public path is required. 400 · This page cannot be shared as a public snapshot. 400 · The public page was not found. 404

Accès et limite de débit

Anonyme, origine de confiance requise; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

snapshotId · revision

Source et incertitude

If immutable evidence is not published, issuance returns a canonical_only state; retryable storage faults return a human-readable error and 503.

Exemple d’appel

POST /api/public/v1/share-snapshots

JSON Schema

État d’un lien de partageGET/share-snapshots/{snapshotId}snapshotIdJSON

Statut HTTP

200 · 400 · 404 · 410 · 503

Codes de motif d’erreur

—

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

snapshotId · revision

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/share-snapshots/{snapshotId}

JSON Schema

Carte sociale d’un lien de partageGET/share-snapshots/{snapshotId}/opengraphsnapshotIdPNG

Statut HTTP

200 · 400 · 404 · 503

Codes de motif d’erreur

invalid_identifier 400 · not_found 404 · temporarily_unavailable 503

Accès et limite de débit

Accès anonyme; 60/min lorsque la limite distribuée est configurée.

Identifiants stables

snapshotId · revision

Source et incertitude

Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.

Exemple d’appel

GET /api/public/v1/share-snapshots/{snapshotId}/opengraph

JSON Schema

Accès et utilisation

Accès et utilisationLimites, cache, versions, vie privée et licence
Accès
Toute ressource GET est publique et gratuite, avec ou sans clé. Les ressources en lot et l’historique exigent une clé Développeur. Les deux ressources POST (créer un lien de partage, tracer un chemin de rue) n’acceptent que les requêtes d’otranspo.ca.
Clés
Envoyez la clé dans Authorization: Bearer otr_… ou X-API-Key. Jamais dans l’adresse. Une clé erronée, révoquée ou expirée reçoit 401, jamais une réponse sans clé.
Limite de débit
1 000 appels par jour et 60 par minute, avec ou sans clé gratuite; 100 000 par jour et 600 par minute avec le forfait Développeur. Lisez les en-têtes X-RateLimit-* de chaque réponse; X-RateLimit-Status indique quand les limites sont dégradées.
Cache
Les ressources sont mises en cache brièvement en périphérie, et les ressources en direct, comme les annulations, sont envoyées no-store. Les morceaux d’horaire hors ligne ne changent jamais une fois publiés.
Versions
Chaque réponse nomme son schema et sa schemaVersion. Un changement majeur reçoit un nouveau chemin /v2, avec 180 jours de préavis dans les en-têtes Deprecation, Sunset et Link.
Confidentialité
N’envoyez pas de données personnelles. Les coordonnées envoyées au tracé de rue servent à cette requête seulement, sans journal ni conservation. Les réponses ne contiennent jamais d’identifiants de compte, de recherches de trajet, d’adresses courriel ou réseau, ni de liens de preuve internes.
Inconnu n’est pas zéro
Une réponse peut être indisponible même si la ressource existe. Lisez status, evidenceState, les heures des sources, la couverture et les limites. Les états de ligne comparent l’horaire aux autobus vus; ce ne sont pas des avis d’un transporteur.
Licence
Code : MIT. Les données d’OC Transpo et de la STO restent sous leurs propres conditions et exigent une mention. Nos chiffres : CC BY 4.0, mention otranspo.ca.
Pas encore fait
Aucun SDK n’est publié, aucune deuxième ville n’est prise en charge et l’accès par clé de partenaire n’est pas ouvert. Cette page ne les revendique pas.
Données et téléchargementsLes mêmes chiffres en fichiers CSV et JSON, avec la façon de les citer.