ᐱᓗᐊᖅᑐᒧᑦ ᑎᑎᕋᖅᓯᒪᔪᒧᑦ ᐊᐅᓪᓚᕐᓗᑎᑦ

ᐊᔪᕐᓇᖅᑐᖅ ᐅᖃᐅᑎᒋᓗᒍ

This page is not about one stop, route, station or vehicle. Open one to have the report name it, or use the full report.

ᖃᓄᐃᓕᖓᓯᒪᕙ?
Full report No account needed
ᓇᓗᓇᐃᖅᓯᔾᔪᑎᑦ ᑐᑭᓯᒋᐊᕈᑎᓪᓗ
  1. ᐅᖃᓕᒫᕐᓂᖅ
  2. ᓇᓗᓇᐃᖅᓯᔾᔪᑎᑦ ᑐᑭᓯᒋᐊᕈᑎᓪᓗ
  3. ᓴᓇᔨᓄᑦ API

ᑕᒪᕐᒥᒃ ᓈᓴᐅᑎᑦ ᑐᑭᓯᒋᐊᕐᕕᖕᒥ ᐊᑭᖃᙱᑦᑐᒥᒃ ᐱᔪᓐᓇᖅᑕᑦ JSON ᐊᑐᖅᖢᒍ.ᓴᓇᔨᓄᑦ API

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.

Free, key optional · 1,000 a day, 60 a minute · code MIT · version 1.0.0

ᐊᑐᕈᓐᓇᕐᓂᖅ

Free

key optional

ᑐᒃᓯᕋᐅᑎᑦ ᑭᓪᓕᖓ

1,000 a day

60 a minute; more on Developer

ᖃᕆᑕᐅᔭᒃᑯᑦ ᑎᑎᕋᖅᓯᒪᔪᑦ ᐊᑐᕈᓐᓇᐅᑎᖓ

MIT

data keeps its source’s terms

ᓇᓪᓕᐊᖕᓂᖓ

1.0.0

stable · 180 days’ notice

Plans

Free

1,000 calls a day, 60 a minute. No key needed; a free key counts your calls separately from everyone else on your network.

Credit ‘Data: OTranspo (otranspo.ca)’ wherever you show the data.

Developer

$10 a monthor $100 a year (CAD)

  • 100,000 calls a day, 600 a minute
  • Bulk downloads and full history
  • Support by email

Journalists, students and council staff: the free tier is yours. Write to us if you need more for a story or a study.

How to send a key

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

ᑭᒡᓕᖏᑦ

Each answer carries X-RateLimit-Remaining (this minute) and X-RateLimit-Daily-Remaining (today, UTC). Over the limit you get 429 with the time it resets.

ᐊᑕᐅᓯᕐᒥᒃ ᑐᓴᕐᓂᐊᕐᓂᖅ, ᐱᒋᐊᕐᓂᕐᒥᑦ ᐃᓱᓕᓂᕐᒧᑦ

ᑐᒃᓯᕋᐅᑦ

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

The response is the real one from this site, fetched when you ask.

ᑭᐅᔾᔪᑎ, ᓇᐃᑦᑐᖅᓯᒪᔪᖅ ᐋᖅᑭᒃᓯᒪᓂᖓ

ᐱᓕᕆᔪᖅ…

ᐃᑲᔪᖅᑐᐃᔾᔪᑎᓕᒫᑦ, 39

ᐃᖏᕐᕋᕝᕕᐅᔪᑦ ᐱᒋᐊᖃᑦᑕᖅᑐᑦ /api/public/v1 ᒥᑦ, ᑕᒪᐃᓐᓂᒃ ᑎᑎᕋᖅᑕᐅᙱᑉᐸᑕ. ᐅᒃᑯᐃᓗᒍ ᑭᓱᑐᐃᓐᓇᖅ ᑎᑎᕋᖅᓯᒪᔪᖅ. ᑕᑯᓂᐊᖅᑐᑎᑦ HTTP ᖃᓄᐃᓕᖓᓂᖏᓐᓂᒃ, ᑕᒻᒪᖅᓯᒪᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᖏᓐᓂᒃ, ᐃᓯᕐᓂᕐᒧᑦ ᐱᔪᓐᓇᕐᓂᕐᒥᒃ, ᖃᐅᔨᒪᔭᐅᓪᓚᕆᙱᑦᑐᓂᒃ ᐊᒻᒪ ᐋᖅᑭᐅᒪᓂᖓᓂᒃ.

ᓇᓗᓇᐃᔭᖅᓯᒪᔪᑦ ᐊᖏᖃᑎᒌᒍᑎᓪᓗᐅᕙᓂ ᐱᒋᐊᕐᓗᑎᑦ2
API ᓇᓗᓇᐃᔭᐃᑦGET/api/public/v1—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

endpoints.id · endpoints.path

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1

JSON Schema

OpenAPI 3.1 ᐊᖏᖃᑎᒌᒍᑎGET/openapi.json—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

operationId · path

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/openapi.json

JSON Schema

ᒫᓐᓇ ᐱᔨᑦᓯᕐᓂᖅᓱᓇ ᒫᓐᓇ ᐱᒻᒪᖔᑦ5
Cancellations posted nowGET/current-cancellations—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

unsupported_query 400 · current_cancellations_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

trips.tripId · trips.routeId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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.

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/current-cancellations

JSON Schema

ᐊᖁᑎᑦ ᖃᓄᐃᓕᖓᓂᖏᑦ: ᐸᕐᓇᐅᑎᒥ ᐊᓪᓚᓯᒪᔪᑦ, ᑕᑯᔭᐅᓯᒪᔪᓪᓗGET/route-states—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

operatorId · routeId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

This is not an operator alert. Routes without published positions use positions_not_published; stale or missing feeds return unavailable.

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/route-states

JSON Schema

ᐊᑲᐅᙱᑦᑐᑦ ᐱᓯᒪᔪᑦ, ᖃᓪᓗᓈᑎᑐᑦ ᐅᐃᒍᐃᑎᑐᓪᓗGET/incidents—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

publicId · slug · updates.id

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/incidents

JSON Schema

ᐊᑕᐅᓯᖅ ᐅᔾᔨᖅᑐᐃᒍᑎ ᐃᓕᓴᕆᔭᐅᔪᖅGET/alerts/{alertId}format=json|csv · alertIdJSON · CSV

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_alert_id 400 · unsupported_format 400 · alert_not_found 400 · alert_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

alert.id · alert.operatorId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓄᖅᑲᖓᕝᕕᒃ ᓇᓗᓇᐃᖅᓯᒍᑎGET/stations/{stationId}format=json|csv · stationIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_station_id 400 · unsupported_format 400 · station_not_found 404 · station_board_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

station.id · lines.routeRecordId · departures.tripId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓇᓗᓇᐃᖅᓯᒍᑎᑦ ᐊᒻᒪ ᑐᓴᖅᑎᑦᑎᓂᖏᑦᓈᓴᐅᑏᑦ ᒪᑉᐱᒐᑐᐃᓐᓇᕐᓂ ᐊᑐᖅᑕᐅᔪᑦ11
ᑐᙵᕕᒋᔭᐅᔪᓐᓇᕐᓂᖓ: ᓇᓗᓇᐃᖅᓯᔾᔪᑏᑦGET/reliability-evidenceformat=json|csvJSON · CSV

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

unsupported_format 400

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

routeId · window

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/reliability-evidence

JSON Schema

ᐊᖅᑯᑎᐅᑉ ᑐᓴᒐᒃᓴᖏᑦGET/routes/{routeId}/evidenceformat=json|csv · routeIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_route_id 400 · unsupported_format 400 · route_not_found 404 · route_evidence_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

route.routeId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

Route 7 evidence on the site

ᐊᖁᑦ ᐱᓕᕆᓂᖓ ᐅᓪᓗᐃᑦ ᒪᓕᒃᖢᒋᑦGET/routes/{routeId}/service-evidencewindow=day|week|month|28d · date · format=json|csv · routeIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

routeId · window

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓄᖃᖓᕕᒃ ᐅᕝᕙᓘᓐᓃᑦ ᓄᓇᓕᐅᑉ ᐃᓚᖓ: ᐱᔨᑦᑎᕋᐅᑎGET/places/{kind}/{placeId}/service-evidencedate · kind=station|ward · placeIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

kind · placeId · operatorId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

Observation and cancellation completeness are explicitly unverified; no-position candidate counts remain null and comparison eligibility is false.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓇᓗᓇᐃᖅᓯᓂᕐᒧᑦ ᑎᑎᕋᖅᓯᒪᔪᑦ ᐊᐅᓪᓚᑦᑎᓗᒋᑦGET/evidence/{evidenceId}format=json|csv · evidenceIdJSON · CSV

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

unsupported_format 400 · not_found 404

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

evidenceId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

Ward scorecardsGET/ward-scorecardsformat=json|csvJSON · CSV

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

snapshotId · wardId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/ward-scorecards

JSON Schema

ᐊᓂᒍᖅᓯᒪᔪᑦ ᖃᓄᐃᓕᐅᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᖅᓯᒍᑏᑦGET/historical-scorecardssnapshotId=historical-scorecards:<sha256> · routeIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 422

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

snapshotId · routeId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/historical-scorecards

JSON Schema

ᐱᔨᑦᑎᕋᕐᓂᕐᒧᑦ ᐅᓂᒃᑳᑦ ᑐᖅᓯᒪᔪᑦGET/service-report-archivekindJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_archive_query 400 · archive_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

kind · period

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓂᕆᐅᒋᔭᐅᔪᑦ ᓱᓕᓂᖏᑦGET/prediction-calibration—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

operatorId · routeId · routeContext · horizonBucket

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

Later observed arrival is a comparison, not ground truth or a validated prediction interval; independent validation is false.

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/prediction-calibration

JSON Schema

ᓂᕈᐊᖅᑕᐅᓯᒪᔪᖅ ᐃᖏᕐᕋᔾᔪᑎᒥᒃ ᑐᓴᖅᑎᑦᑎᓂᖅ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

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_selection 400 · selected_report_unavailable 503 · invalid_route_hour_selection 400 · route_hours_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᖅ. public-api ᑭᒡᓕᖓ ᐋᖅᑭᒃᓱᖅᑕᐅᓯᒪᙱᑦᑐᖅ ᐅᕗᖓ ᐊᖁᑎᒧᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

period · date · operator · method

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᓂᕆᐅᒋᔭᐅᔪᑦ ᓇᓪᓕᒋᐊᕈᑎᖏᑦGET/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

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_comparison_evidence_selection 400

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

payload.edition · payload.selection · checksum.value

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐱᓯᒪᔪᑦ ᑕᑯᒃᑲᓐᓂᕐᓂᖏᓪᓗᐱᓯᒪᓕᖅᑐᑦ6
Past cancellations and gapsGET/historical-cancellationswindow=day|week|28d|month · date · assessment=noneJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

period · records.tripId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

Historical polling completeness is unverified and schedule matching may be unassessed; unknown coverage is not zero cancellations.

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/historical-cancellations

JSON Schema

ᓄᓇᓕᒃ ᑕᑯᒃᑲᓐᓂᕐᓗᒍGET/replaydate · routeFamily · operator · fromMinute · minutes · summaryJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

date · routeFamily · operator

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

Replay is historical and never live; only captured/published archive evidence is returned.

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/replay

JSON Schema

ᐃᖏᕆᐊᔾᔪᑏᑦ ᑕᑯᔭᐅᓯᒪᔪᑦ, ᐅᓪᓗᒥ ᐊᑐᓂGET/fleet-historydate · operator=all|oc_transpo|sto · route · feedIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_fleet_history_lookup 400 · invalid_fleet_history_date 400 · invalid_fleet_history_operator 400 · fleet_history_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

serviceDate · operator · route

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/fleet-history

JSON Schema

ᐃᖏᕐᕋᔾᔪᑏᑦ ᓇᓗᓇᐃᒃᑯᑕᖏᑦ, ᐅᓪᓗᑦ ᐊᑐᓂGET/fleet-history/feed-idsdate · operator=all|oc_transpo|sto · cursorJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

date · operator · digest · collisionOrdinal

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

One vehicle ID over timeGET/vehicles/{vehicleId}/visibility-historyformat=json|csv · vehicleIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_vehicle_id 400 · unsupported_format 400 · vehicle_history_unavailable 503 · vehicle_history_not_found 404

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

vehicleId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

Vehicles seen, in bulkGET/bulk/fleet-historyfrom · to · operator=all|oc_transpo|sto · route · feedIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 401 · 403 · 429 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

serviceDate · operator · route

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐃᑲᕐᕋᓕᐅᖅᓯᒪᓂᖏᑦ ᐃᑭᐊᖅᑭᕖᑦ ᐱᑕᖃᙱᑦᑎᓪᓗᒍᓴᖅᑭᑕᐅᓯᒪᔪᑦ ᐃᑲᕐᕋᓕᐅᖅᓯᒪᔪᑦ6
ᐃᑲᕐᕋᐃᑦ ᐊᑕᐅᓯᕐᒧᑦ ᐊᖁᑎᒧᑦGET/transit-planning/{routeId}date · routeIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_route_or_date 400 · use_history_for_past_dates 400 · planning_baseline_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

routeId · serviceDate

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐃᖏᕐᕋᓂᐅᑉ ᐃᑲᕐᕋᖏᑦ ᑕᒪᐃᓐᓂGET/transit-planning/networkdateJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_parameters 400 · invalid_service_date 400 · network_baseline_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

serviceDate

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐊᖁᑎ ᒪᕐᕉᒃ ᐃᓂᒃ ᐊᑯᓐᓂᖓᓐᓂPOST/transit-planning/street-pathbodyJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_body 400 · invalid_segment 400

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᖏᑦᑐᖅ. ᐱᕝᕕᖓ ᐅᐱᒋᔭᐅᔪᖅ ᐱᔭᕆᐊᖃᖅᑐᖅ. 60 ᐊᑐᓂ ᒥᓂᑦᒥ ᑭᒡᓕᖃᖅᑎᑦᑎᓂᖅ ᐊᑐᖅᑎᓪᓗᒍ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

from · to

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

Path may be unavailable when routing source data is absent; no path is not evidence of no accessible route.

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐊᐅᓚᓂᕐᒧᑦ ᐃᑲᕐᕋᖏᑦ ᐃᓐᑕᓇᐃᑦ ᐱᑕᖃᖏᑦᑎᓗᒍGET/offline-pack—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

offline_pack_not_published 503 · offline_pack_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

packId · digest

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/offline-pack

JSON Schema

ᐃᓐᑕᕐᓀᑦ ᐊᑐᖏᓐᓂᕐᒥ ᐊᑐᕐᓇᖅᑐᑦ ᑎᑎᕋᖅᓯᒪᔪᑦGET/offline-pack/manifestpackJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

packId · shards.id

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

Offline pack pieceGET/offline-pack/shards/{id}idbytes

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

id · digest

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᑎᑎᕋᖅᓯᒪᔪᑦ ᐊᒻᒪ ᐊᑐᐊᒐᖅᓇᓪᓕᐊᑦ ᐊᓯᔾᔨᖅᑕᕗᑦ ᓱᒻᒪᓪᓗ6
ᐋᖅᑭᒋᐊᖅᓯᒪᔪᑦ ᑎᑎᖅᑲᖏᑦGET/correctionsformat=json|csvJSON · CSV

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

unsupported_format 400

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

records.id · records.revision

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/corrections

JSON Schema

ᐊᑐᐊᒐᐃᑦ ᑎᑎᖅᑲᖓGET/policy-register—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

records.id · records.revision

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/policy-register

JSON Schema

Accessibility assuranceGET/accessibility-assurance—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

evidence.id · remediationLog.id

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/accessibility-assurance

JSON Schema

ᓄᓇᓕᓐᓂ ᐊᑐᐃᓐᓇᐅᓂᖓ ᑐᓴᒐᒃᓴᐃᓪᓗ ᓄᑖᐅᓂᖏᑦGET/regional-coverage—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

operators.operatorId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/regional-coverage

JSON Schema

ᑐᓴᖅᑎᑦᑎᓂᕐᒧᑦ ᐃᑲᔪᕐᓂᕐᒧᓪᓗ ᐊᑐᐃᓐᓇᐅᔪᑦGET/journey-service-policy—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

contractVersion · channels.channel

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐸᔅᓯᐅᑉ ᓴᖅᑭᑎᑕᐅᓂᖓᓂᒃ ᕿᒥᕐᕈᓂᖅGET/fleet-presentation—JSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

evidence.operatorSamples.operatorId

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

GET /api/public/v1/fleet-presentation

JSON Schema

ᑐᓂᓯᓂᖅᐊᑕᔾᔪᑏᑦ ᐊᒻᒪ ᐊᓯᒥᓄᑦ ᑐᓂᔭᒃᓴᐃᑦ3
Make a share linkPOST/share-snapshotsbodyJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 409 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

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

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᖏᑦᑐᖅ. ᐱᕝᕕᖓ ᐅᐱᒋᔭᐅᔪᖅ ᐱᔭᕆᐊᖃᖅᑐᖅ. 60 ᐊᑐᓂ ᒥᓂᑦᒥ ᑭᒡᓕᖃᖅᑎᑦᑎᓂᖅ ᐊᑐᖅᑎᓪᓗᒍ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

snapshotId · revision

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

POST /api/public/v1/share-snapshots

JSON Schema

ᐊᓯᖏᓐᓄᑦ ᑐᓂᐅᖅᑲᐃᔾᔪᑎᐅᑉ ᖃᓄᐃᓕᖓᓂᖓGET/share-snapshots/{snapshotId}snapshotIdJSON

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 410 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

—

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

snapshotId · revision

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐊᓯᖏᓐᓄᑦ ᑐᓂᓯᒍᑎ ᑕᑯᒃᓴᐅᑎᑦᑎᔪᖅGET/share-snapshots/{snapshotId}/opengraphsnapshotIdPNG

HTTP ᖃᓄᐃᓕᖓᓂᖓ

200 · 400 · 404 · 503

ᑕᒻᒪᕐᓂᕐᒧᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

invalid_identifier 400 · not_found 404 · temporarily_unavailable 503

ᐊᑐᕈᓐᓇᕐᓂᖅ ᐊᒻᒪ ᐊᑐᕈᓐᓇᖅᑕᐃᑦ ᑭᓪᓕᖓ

ᐊᑎᖃᙱᑦᑐᑦ ᐊᑐᕈᓐᓇᖅᑐᑦ. 60 ᒥᓂᑦᒥ ᐊᑕᐅᓯᕐᒥ, ᐊᑐᕐᓂᖅ ᑭᒡᓕᖃᖅᑎᑕᐅᓕᕐᒪᑦ.

ᐊᓯᔾᔨᖅᑕᐅᖃᑦᑕᙱᑦᑐᑦ ᓇᓗᓇᐃᒃᑯᑕᐃᑦ

snapshotId · revision

ᓇᑭᙶᕐᓂᖓ ᐊᒻᒪ ᖃᐅᔨᒪᔭᐅᓗᐊᙱᑦᑐᑦ

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

ᐆᒃᑐᕋᐅᑎ

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

JSON Schema

ᐃᓯᕈᓐᓇᕐᓂᖅ ᐊᑐᕐᓂᕐᓗ

ᐃᓯᕈᓐᓇᕐᓂᖅ ᐊᑐᕐᓂᕐᓗLimits, caching, versions, privacy and licence
ᐊᑐᕈᓐᓇᕐᓂᖅ
Every GET resource is public and free to use, with or without a key. Bulk and history resources need a Developer key. The two POST resources (making a share link, drawing a street path) only accept requests from otranspo.ca itself.
ᑐᒃᓯᕋᐅᑎᑦ ᑭᓪᓕᖓ
1,000 calls a day and 60 a minute, with or without a free key; 100,000 a day and 600 a minute on the Developer plan. Read the X-RateLimit-* headers on every answer; X-RateLimit-Status says when limits are degraded.
Keys
Send a key as Authorization: Bearer otr_… or X-API-Key. Never in the address. A wrong, revoked or expired key gets 401, never a keyless answer.
ᑐᖁᓯᒪᑎᑦᑎᓂᖅ
The index is kept 30 seconds by your browser and 5 minutes at the edge. Live resources such as cancellations are sent no-store. Offline timetable pieces never change once published.
ᐊᓯᔾᔨᖅᑕᐅᓯᒪᔪᑦ
Each response names its schema and schemaVersion. A breaking change gets a new /v2 path, with 180 days’ notice in Deprecation, Sunset and Link headers.
ᓇᓗᓇᐃᖅᓯᒍᑎᑦ ᓴᐳᔾᔭᐅᓂᖏᑦ
ᓇᓗᓇᐃᖅᓯᒋᐊᓐᓇᖅᑐᓂᒃ ᑐᓴᒐᒃᓴᓂᒃ ᑐᓂᓯᓇᓐᖏᑦᑐᑎᑦ. ᐃᓂᒋᔭᐅᔪᑦ ᑐᓂᔭᐅᔪᑦ ᐊᖁᑎᒧᑦ ᐊᑐᖅᑕᐅᔪᑦ ᑕᐃᒃᑯᓇᓐᖓᐅᖅ ᑐᒃᓯᕋᐅᑎᒧᑦ. ᑎᑎᕋᖅᑕᐅᙱᑦᑐᑦ ᐳᐃᒍᖅᑕᐅᙱᑦᑐᓪᓗ. ᑭᐅᔾᔪᑏᑦ ᐱᑕᖃᕐᓂᐊᙱᑦᑐᑦ ᐊᑦᑕᓇᐅᑦ ᓈᓴᐅᑎᖏᓐᓂᒃ, ᐃᖏᕐᕋᓂᕐᒥᒃ ᕿᓂᕐᓂᕐᓂᒃ, email ᑎᑎᖅᑲᐃᑦ ᓇᓃᓐᓂᖏᓐᓂᒃ, ᖃᕆᑕᐅᔭᒃᑯᑦ ᓇᓃᓐᓂᖏᓐᓂᒃ, ᐅᕝᕙᓘᓐᓃᑦ ᐃᓗᐊᓃᑦᑐᓂᒃ ᓇᓗᓇᐃᖅᓯᒋᐊᓐᓇᖅᑐᓂᒃ ᐊᑯᓂᐅᑎᓂᒃ.
Unknown is not zero
ᑭᐅᔾᔪᑎ ᐊᑐᐃᓐᓇᐅᙱᑦᑐᖃᕈᓐᓇᖅᑐᖅ, ᑐᑭᓯᒋᐊᕈᑎ ᐊᑐᐃᓐᓇᐅᑎᓪᓗᒍ. ᐅᖃᓕᒫᕐᓗᒋᑦ status, evidenceState, ᓇᑭᙶᕐᓂᖏᑦ ᐱᕕᖏᑦ, ᓇᓃᑦᑐᓂᒃ ᐃᓚᓕᐅᔾᔨᓂᖏᑦ, ᑭᒡᓕᖏᓪᓗ. ᐊᖁᑎᑦ ᖃᓄᐃᓐᓂᖏᑦ ᓈᒻᒪᒃᓴᖅᑕᐅᔪᑦ ᐊᐅᓪᓚᕐᕕᒃᓴᖏᓐᓂᒃ ᐸᓯᓄᓪᓗ ᑕᑯᔭᐅᓯᒪᔪᓄᑦ. ᐊᐅᓚᑦᑎᔨᒥᑦ ᐅᖃᐅᓯᐅᙱᑦᑐᑦ.
ᐱᔪᓐᓇᐅᑎ
ᑰᑦ: MIT. OC Transpo ᐊᒻᒪ STO ᑐᑭᓯᒋᐊᕈᑎᖏᑦ ᓇᒻᒥᓂᖅ ᒪᓕᒐᖃᖅᑐᑦ. ᐊᑎᖏᑦ ᑎᑎᕋᖅᑕᐅᑦᑕᕆᐊᖃᖅᑐᑦ. ᓈᓴᐅᑎᕗᑦ: CC BY 4.0. otranspo.ca ᐊᑎᖓ ᑎᑎᕋᖅᓗᒍ.
ᐃᓱᓕᑦᑎᑕᐅᓚᐅᖏᑦᑐᖅ
No SDK is published, no second city is supported, and partner tenant-key access is not open. This page does not claim them.
ᑐᑭᓯᒋᐊᕈᑎᑦ, ᐱᔪᓐᓇᖅᑕᑎᑦᓈᓴᐅᑏᑦ ᐊᔾᔨᐸᓗᐃᑦ CSV ᐊᒻᒪ JSON ᖃᕆᑕᐅᔭᒃᑯᑦ. ᓇᑭᙶᕐᓂᖏᓐᓂᒃ ᖃᓄᖅ ᐅᖃᐅᓯᕆᓂᐊᕐᓂᖓᓂᒃ ᐊᒻᒪ.