- Lettura
- Prove e dati
- API per sviluppatori
Ogni dato di questo sito è a una chiamata JSON gratuita di distanza.API per sviluppatori
Every figure here is versioned JSON. Free to use, with or without a key.Every figure here is versioned JSON. Free to use, with or without a key.
Indirizzo di base https://otranspo.ca/api/public/v1
Free, key optional · 1,000 a day, 60 a minute · code MIT · version 1.0.0
- Accesso
Gratuito
chiave facoltativa
- Limite di richieste
1,000 al giorno
60 al minuto; altri dettagli in Developer
- Licenza del codice
MIT
i dati mantengono le condizioni della loro fonte
- Versione
1.0.0
stabile · preavviso di 180 giorni
Piani
Gratuito
1,000 chiamate al giorno, 60 al minuto. Non serve alcuna chiave. Una chiave gratuita conteggia le chiamate separatamente da quelle di tutti gli altri sulla stessa rete.
Citi ‘Data: OTranspo (otranspo.ca)’ ovunque mostri i dati.
Sviluppatore
$10 al meseoppure $100 all'anno (CAD)
- 100,000 chiamate al giorno, 600 al minuto
- Download in blocco e cronologia completa
- Assistenza via e-mail
Giornalisti, studenti e personale del consiglio comunale: il livello gratuito è per Voi. Ci scriva se ha bisogno di più per un articolo o per uno studio.
Come inviare una chiave
curl -H "Authorization: Bearer otr_…" https://otranspo.ca/api/public/v1/route-statesLimiti
Ogni risposta contiene X-RateLimit-Remaining (questo minuto) e X-RateLimit-Daily-Remaining (oggi, UTC). Se supera il limite, riceve 429 con l'ora in cui il limite si azzera.
Una sola chiamata, dall'inizio alla fine
Richiesta
curl https://otranspo.ca/api/public/v1/route-statesLa risposta è quella reale di questo sito, ottenuta nel momento in cui Lei la richiede.
Risposta, abbreviata Schema
In corso…
Tutte le risorse, 39
I percorsi iniziano con /api/public/v1, salvo se scritti per intero. Apra una riga per vedere stati HTTP, codici di errore, accesso, incertezza e schema.
Indice e contrattoinizi da qui2
Indice delle APIGET /api /public /v1—JSON
Stato HTTP
200
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
endpoints.id · endpoints.path
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Contratto OpenAPI 3.1GET /openapi.json—JSON
Stato HTTP
200
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
operationId · path
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Servizio attualecosa succede in questo momento5
Cancellazioni pubblicate oraGET /current-cancellations—JSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
unsupported_query 400 · current_cancellations_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
trips.tripId · trips.routeId
Fonte e incertezza
Only explicit CANCELED/DELETED notices for timetable trips in the current snapshot are listed. Empty or unavailable feeds do not prove that no trips were cancelled; outside-timetable notices may be withheld.
Stati delle linee: previsto e osservatoGET /route-states—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
operatorId · routeId
Fonte e incertezza
This is not an operator alert. Routes without published positions use positions_not_published; stale or missing feeds return unavailable.
Incidenti, in inglese e in franceseGET /incidents—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
publicId · slug · updates.id
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Un avviso ufficialeGET /alerts /{alertId}format=json|csv · alertIdJSON · CSV
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_alert_id 400 · unsupported_format 400 · alert_not_found 400 · alert_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
alert.id · alert.operatorId
Fonte e incertezza
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.
Tabellone della stazioneGET /stations /{stationId}format=json|csv · stationIdJSON
Stato HTTP
200 · 400 · 404 · 503
Codici dei motivi di errore
invalid_station_id 400 · unsupported_format 400 · station_not_found 404 · station_board_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
station.id · lines.routeRecordId · departures.tripId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Dati probanti e segnalazionii dati dietro ogni pagina11
Dati probatori sull'affidabilitàGET /reliability-evidenceformat=json|csvJSON · CSV
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
unsupported_format 400
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
routeId · window
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Dati probanti della lineaGET /routes /{routeId} /evidenceformat=json|csv · routeIdJSON
Stato HTTP
200 · 400 · 404 · 503
Codici dei motivi di errore
invalid_route_id 400 · unsupported_format 400 · route_not_found 404 · route_evidence_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
route.routeId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Esempio di chiamata
GET /api/public/v1/routes/{routeId}/evidence
Servizio della linea per giornoGET /routes /{routeId} /service-evidencewindow=day|week|month|28d · date · format=json|csv · routeIdJSON
Stato HTTP
200 · 400 · 404 · 503
Codici dei motivi di errore
invalid_route_id 400 · unsupported_window 400 · invalid_service_date 400 · unsupported_format 400 · route_not_found 404 · route_service_evidence_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
routeId · window
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Servizio per stazione o quartiere elettoraleGET /places /{kind} /{placeId} /service-evidencedate · kind=station|ward · placeIdJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
unsupported_place_kind 400 · invalid_place_id 400 · unsupported_query 400 · invalid_service_date 400 · place_service_evidence_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
kind · placeId · operatorId
Fonte e incertezza
Observation and cancellation completeness are explicitly unverified; no-position candidate counts remain null and comparison eligibility is false.
Scarica il file dei dati probantiGET /evidence /{evidenceId}format=json|csv · evidenceIdJSON · CSV
Stato HTTP
200 · 400 · 404
Codici dei motivi di errore
unsupported_format 400 · not_found 404
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
evidenceId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Pagelle dei quartieri elettoraliGET /ward-scorecardsformat=json|csvJSON · CSV
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
snapshotId · wardId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Edizioni precedenti delle pagelleGET /historical-scorecardssnapshotId=historical-scorecards:<sha256> · routeIdJSON
Stato HTTP
200 · 400 · 404 · 422
Codici dei motivi di errore
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
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
snapshotId · routeId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Archivio dei segnalazioni di servizioGET /service-report-archivekindJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_archive_query 400 · archive_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
kind · period
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Precisione delle previsioniGET /prediction-calibration—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
operatorId · routeId · routeContext · horizonBucket
Fonte e incertezza
Later observed arrival is a comparison, not ground truth or a validated prediction interval; independent validation is false.
Rapporto sul servizio selezionatoGET /api /insights /reports /selected?period={period}&date={YYYY-MM-DD}period=day|week|month · date=YYYY-MM-DD · operator=all|oc_transpo|sto · routeJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_selection 400 · selected_report_unavailable 503 · invalid_route_hour_selection 400 · route_hours_unavailable 503
Accesso e limite di richieste
Anonimo; per questo percorso non è configurato alcun limite per l'API pubblica.
Identificatori stabili
period · date · operator · method
Fonte e incertezza
Without route, the selected-report contract is unchanged. With route, the selected-route-hours contract returns at most48 method-separated local-hour prediction groups, preserving requested report operator separately from routeOperator. These mutable retained predictions do not prove physical arrivals, complete archive coverage, zero service or an immutable publication.
Dati usati per il confronto delle previsioniGET /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
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_comparison_evidence_selection 400
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
payload.edition · payload.selection · checksum.value
Fonte e incertezza
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.
Esempio di chiamata
GET /api/insights/reports/selected/comparison-evidence?period={period}&date={YYYY-MM-DD}
Cronologia e riproduzioneche cosa è già successo6
Cancellazioni e interruzioni passateGET /historical-cancellationswindow=day|week|28d|month · date · assessment=noneJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
unsupported_query 400 · unsupported_window 400 · invalid_service_date 400 · unsupported_assessment 400 · historical_cancellations_unavailable 503 · historical_cancellation_limit_exceeded 400
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
period · records.tripId
Fonte e incertezza
Historical polling completeness is unverified and schedule matching may be unassessed; unknown coverage is not zero cancellations.
Riproduzione della cittàGET /replaydate · routeFamily · operator · fromMinute · minutes · summaryJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
date_required 400 · invalid_route_family 400 · invalid_operator 400 · replay_positions_unavailable 503 · published_replay_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
date · routeFamily · operator
Fonte e incertezza
Replay is historical and never live; only captured/published archive evidence is returned.
Veicoli osservati, per giornoGET /fleet-historydate · operator=all|oc_transpo|sto · route · feedIdJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_fleet_history_lookup 400 · invalid_fleet_history_date 400 · invalid_fleet_history_operator 400 · fleet_history_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
serviceDate · operator · route
Fonte e incertezza
Retained feed observations are not a physical fleet inventory; missing retention is not zero service.
ID dei veicoli del feed, per giornoGET /fleet-history /feed-idsdate · operator=all|oc_transpo|sto · cursorJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
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
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
date · operator · digest · collisionOrdinal
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Un ID veicolo nel tempoGET /vehicles /{vehicleId} /visibility-historyformat=json|csv · vehicleIdJSON
Stato HTTP
200 · 400 · 404 · 503
Codici dei motivi di errore
invalid_vehicle_id 400 · unsupported_format 400 · vehicle_history_unavailable 503 · vehicle_history_not_found 404
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
vehicleId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Veicoli osservati, dati completiGET /bulk /fleet-historyfrom · to · operator=all|oc_transpo|sto · route · feedIdJSON
Stato HTTP
200 · 400 · 401 · 403 · 429 · 503
Codici dei motivi di errore
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
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
serviceDate · operator · route
Fonte e incertezza
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.
Orari e uso offlinel'orario pubblicato6
Orario di una lineaGET /transit-planning /{routeId}date · routeIdJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_route_or_date 400 · use_history_for_past_dates 400 · planning_baseline_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
routeId · serviceDate
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Orario della reteGET /transit-planning /networkdateJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_parameters 400 · invalid_service_date 400 · network_baseline_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
serviceDate
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Percorso stradale tra due puntiPOST /transit-planning /street-pathbodyJSON
Stato HTTP
200 · 400 · 503
Codici dei motivi di errore
invalid_body 400 · invalid_segment 400
Accesso e limite di richieste
Anonimo, origine attendibile richiesta; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
from · to
Fonte e incertezza
Path may be unavailable when routing source data is absent; no path is not evidence of no accessible route.
Pacchetti orari offlineGET /offline-pack—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
offline_pack_not_published 503 · offline_pack_unavailable 503
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
packId · digest
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Manifesto del pacchetto offlineGET /offline-pack /manifestpackJSON
Stato HTTP
200 · 404 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
packId · shards.id
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Parte del pacchetto offlineGET /offline-pack /shards /{id}idbytes
Stato HTTP
200 · 404 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
id · digest
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Registri e normeche cosa abbiamo cambiato e perché6
Registro delle correzioniGET /correctionsformat=json|csvJSON · CSV
Stato HTTP
200 · 400
Codici dei motivi di errore
unsupported_format 400
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
records.id · records.revision
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Registro delle politicheGET /policy-register—JSON
Stato HTTP
200
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
records.id · records.revision
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Garanzia di accessibilitàGET /accessibility-assurance—JSON
Stato HTTP
200
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
evidence.id · remediationLog.id
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Copertura regionale e aggiornamento dei datiGET /regional-coverage—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
operators.operatorId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Canali di notifica e assistenzaGET /journey-service-policy—JSON
Stato HTTP
200
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
contractVersion · channels.channel
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Verifica della presentazione del veicoloGET /fleet-presentation—JSON
Stato HTTP
200 · 503
Codici dei motivi di errore
—
Accesso e limite di richieste
Accesso anonimo; 60 al minuto quando il limite di frequenza distribuito è attivo.
Identificatori stabili
evidence.operatorSamples.operatorId
Fonte e incertezza
Read the response status, evidenceState, source timestamps, limitations and gaps; absence is not proof of zero.
Condivisionelink e schede social3
Accesso e uso
Accesso e usoLimits, caching, versions, privacy and licence
- Accesso
- Ogni risorsa GET è pubblica e gratuita, con o senza chiave. Le risorse in blocco e dello storico richiedono una chiave per sviluppatori. Le due risorse POST (creare un link di condivisione, tracciare un percorso stradale) accettano richieste solo da otranspo.ca stesso.
- Limite di richieste
- 1,000 richieste al giorno e 60 al minuto, con o senza una chiave gratuita; 100,000 al giorno e 600 al minuto con il piano Developer. Legga le intestazioni X-RateLimit-* in ogni risposta; X-RateLimit-Status indica quando i limiti sono ridotti.
- Chiavi
- Invii una chiave come Authorization: Bearer otr_… oppure X-API-Key. Mai nell'indirizzo. Una chiave errata, revocata o scaduta riceve 401, mai una risposta senza chiave.
- Cache
- L'indice resta in memoria per 30 secondi nel Suo browser e per 5 minuti sull'edge. Le risorse in tempo reale, come le cancellazioni, sono inviate con no-store. Le parti dell'orario offline non cambiano più una volta pubblicate.
- Versioni
- Ogni risposta indica il proprio schema e schemaVersion. Una modifica incompatibile riceve un nuovo percorso /v2, con 180 giorni di preavviso nelle intestazioni Deprecation, Sunset e Link.
- Privacy
- Non invii dati personali. Le coordinate inviate al percorso stradale sono usate solo per quella richiesta, mai registrate né conservate. Le risposte non contengono mai ID account, ricerche di viaggi, e-mail o indirizzi di rete, né collegamenti interni alle prove.
- Sconosciuto non significa zero
- Una risposta può risultare non disponibile anche quando la risorsa esiste. Legga status, evidenceState, gli orari delle fonti, la copertura e i limiti. Gli stati delle linee confrontano l'orario previsto con gli autobus osservati. Non sono avvisi dell'operatore.
- Licenza
- Codice: MIT. I dati di OC Transpo e STO restano soggetti ai propri termini open data e richiedono l'indicazione della fonte. I nostri dati: CC BY 4.0, fonte otranspo.ca.
- Non ancora fatto
- No SDK is published, no second city is supported, and partner tenant-key access is not open. This page does not claim them.