Saltar al contenido principal

Reportar un problema

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

Qué pasó
Pruebas y datos
  1. Lectura
  2. Pruebas y datos
  3. API para desarrolladores

Cada cifra de este sitio está a una llamada JSON gratuita.API para desarrolladores

Cada cifra aquí es JSON con versiones. Uso gratuito, con o sin clave.Cada cifra aquí es JSON con versiones. Gratuito, con o sin clave.

Gratis, clave opcional · 1,000 al día, 60 por minuto · código MIT · versión 1.0.0

Acceso

Gratis

clave opcional

Límite de solicitudes

1,000 a day

60 por minuto; más con Desarrollador

Licencia del código

MIT

los datos conservan los términos de su fuente

Versión

1.0.0

estable · aviso con 180 días

Planes

Gratis

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

Cita «Data: OTranspo (otranspo.ca)» dondequiera que muestres los datos.

Desarrollador

10 $ al meso 100 $ al año (CAD)

  • 100,000 calls a day, 600 a minute
  • Descargas masivas e historial completo
  • Asistencia por correo electrónico

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

Cómo enviar una clave

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

Límites

Cada respuesta incluye X-RateLimit-Remaining (este minuto) y X-RateLimit-Daily-Remaining (hoy, UTC). Si superas el límite, recibes 429 con la hora en que se restablece.

Una llamada, de principio a fin

Solicitud

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

La respuesta es la real de este sitio, obtenida cuando la pides.

Respuesta, abreviada Esquema

Ejecutando…

Todos los recursos, 39

Las rutas empiezan en /api/public/v1 salvo que se escriban completas. Abre cualquier fila para ver sus estados HTTP, códigos de error, acceso, incertidumbre y esquema.

Índice y contratoempieza aquí2
Índice de la APIGET/api/public/v1—JSON

Estado HTTP

200

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

endpoints.id · endpoints.path

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1

JSON Schema

Contrato OpenAPI 3.1GET/openapi.json—JSON

Estado HTTP

200

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

operationId · path

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/openapi.json

JSON Schema

Servicio ahoralo que pasa en este minuto5
Cancelaciones publicadas ahoraGET/current-cancellations—JSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

unsupported_query 400 · current_cancellations_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

trips.tripId · trips.routeId

Fuente e incertidumbre

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.

Llamada de ejemplo

GET /api/public/v1/current-cancellations

JSON Schema

Estados de ruta: programado frente a vistoGET/route-states—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

operatorId · routeId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/route-states

JSON Schema

Incidentes, en inglés y francésGET/incidents—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

publicId · slug · updates.id

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/incidents

JSON Schema

Un aviso oficialGET/alerts/{alertId}format=json|csv · alertIdJSON · CSV

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_alert_id 400 · unsupported_format 400 · alert_not_found 400 · alert_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

alert.id · alert.operatorId

Fuente e incertidumbre

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.

Llamada de ejemplo

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

JSON Schema

Tablero de estaciónGET/stations/{stationId}format=json|csv · stationIdJSON

Estado HTTP

200 · 400 · 404 · 503

Códigos de motivo de error

invalid_station_id 400 · unsupported_format 400 · station_not_found 404 · station_board_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

station.id · lines.routeRecordId · departures.tripId

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Evidencia e informeslas cifras detrás de cada página11
Pruebas de fiabilidadGET/reliability-evidenceformat=json|csvJSON · CSV

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

unsupported_format 400

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

routeId · window

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/reliability-evidence

JSON Schema

Datos de la rutaGET/routes/{routeId}/evidenceformat=json|csv · routeIdJSON

Estado HTTP

200 · 400 · 404 · 503

Códigos de motivo de error

invalid_route_id 400 · unsupported_format 400 · route_not_found 404 · route_evidence_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

route.routeId

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Evidencia de la ruta 7 en el sitio

Servicio de una ruta por díaGET/routes/{routeId}/service-evidencewindow=day|week|month|28d · date · format=json|csv · routeIdJSON

Estado HTTP

200 · 400 · 404 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

routeId · window

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Servicio de una estación o distritoGET/places/{kind}/{placeId}/service-evidencedate · kind=station|ward · placeIdJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

kind · placeId · operatorId

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Descarga de un registro de pruebasGET/evidence/{evidenceId}format=json|csv · evidenceIdJSON · CSV

Estado HTTP

200 · 400 · 404

Códigos de motivo de error

unsupported_format 400 · not_found 404

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

evidenceId

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Tarjetas de resultados por distritoGET/ward-scorecardsformat=json|csvJSON · CSV

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

snapshotId · wardId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/ward-scorecards

JSON Schema

Ediciones pasadas de las fichasGET/historical-scorecardssnapshotId=historical-scorecards:<sha256> · routeIdJSON

Estado HTTP

200 · 400 · 404 · 422

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

snapshotId · routeId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/historical-scorecards

JSON Schema

Archivo de informes de servicioGET/service-report-archivekindJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_archive_query 400 · archive_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

kind · period

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Exactitud de las prediccionesGET/prediction-calibration—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

operatorId · routeId · routeContext · horizonBucket

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/prediction-calibration

JSON Schema

Informe de servicio seleccionadoGET/api/insights/reports/selected?period={period}&date={YYYY-MM-DD}period=day|week|month · date=YYYY-MM-DD · operator=all|oc_transpo|sto · routeJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_selection 400 · selected_report_unavailable 503 · invalid_route_hour_selection 400 · route_hours_unavailable 503

Acceso y límite de solicitudes

Anónimo; no hay un límite de public-api configurado para esta ruta.

Identificadores estables

period · date · operator · method

Fuente e incertidumbre

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.

Llamada de ejemplo

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

JSON Schema

Datos de comparación de prediccionesGET/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

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_comparison_evidence_selection 400

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

payload.edition · payload.selection · checksum.value

Fuente e incertidumbre

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.

Llamada de ejemplo

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

JSON Schema

Historial y repeticiónlo que ya pasó6
Cancelaciones y vacíos pasadosGET/historical-cancellationswindow=day|week|28d|month · date · assessment=noneJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

period · records.tripId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/historical-cancellations

JSON Schema

Repetición de la ciudadGET/replaydate · routeFamily · operator · fromMinute · minutes · summaryJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

date · routeFamily · operator

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/replay

JSON Schema

Vehículos vistos, por díaGET/fleet-historydate · operator=all|oc_transpo|sto · route · feedIdJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_fleet_history_lookup 400 · invalid_fleet_history_date 400 · invalid_fleet_history_operator 400 · fleet_history_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

serviceDate · operator · route

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/fleet-history

JSON Schema

Identificadores de vehículos del canal, por díaGET/fleet-history/feed-idsdate · operator=all|oc_transpo|sto · cursorJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

date · operator · digest · collisionOrdinal

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Un identificador de vehículo en el tiempoGET/vehicles/{vehicleId}/visibility-historyformat=json|csv · vehicleIdJSON

Estado HTTP

200 · 400 · 404 · 503

Códigos de motivo de error

invalid_vehicle_id 400 · unsupported_format 400 · vehicle_history_unavailable 503 · vehicle_history_not_found 404

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

vehicleId

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Vehículos vistos, en bloqueGET/bulk/fleet-historyfrom · to · operator=all|oc_transpo|sto · route · feedIdJSON

Estado HTTP

200 · 400 · 401 · 403 · 429 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

serviceDate · operator · route

Fuente e incertidumbre

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.

Llamada de ejemplo

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

JSON Schema

Horarios y sin conexiónel horario publicado6
Horario de una rutaGET/transit-planning/{routeId}date · routeIdJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_route_or_date 400 · use_history_for_past_dates 400 · planning_baseline_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

routeId · serviceDate

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Horario de la redGET/transit-planning/networkdateJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_parameters 400 · invalid_service_date 400 · network_baseline_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

serviceDate

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Camino por la calle entre dos puntosPOST/transit-planning/street-pathbodyJSON

Estado HTTP

200 · 400 · 503

Códigos de motivo de error

invalid_body 400 · invalid_segment 400

Acceso y límite de solicitudes

Anónimo, se exige un origen de confianza; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

from · to

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Paquetes de horarios sin conexiónGET/offline-pack—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

offline_pack_not_published 503 · offline_pack_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

packId · digest

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/offline-pack

JSON Schema

Manifiesto del paquete sin conexiónGET/offline-pack/manifestpackJSON

Estado HTTP

200 · 404 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

packId · shards.id

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Pieza del paquete sin conexiónGET/offline-pack/shards/{id}idbytes

Estado HTTP

200 · 404 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

id · digest

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Registros y políticasqué cambiamos y por qué6
Registro de correccionesGET/correctionsformat=json|csvJSON · CSV

Estado HTTP

200 · 400

Códigos de motivo de error

unsupported_format 400

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

records.id · records.revision

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/corrections

JSON Schema

Registro de políticasGET/policy-register—JSON

Estado HTTP

200

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

records.id · records.revision

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/policy-register

JSON Schema

Garantía de accesibilidadGET/accessibility-assurance—JSON

Estado HTTP

200

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

evidence.id · remediationLog.id

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/accessibility-assurance

JSON Schema

Cobertura regional y actualidadGET/regional-coverage—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

operators.operatorId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/regional-coverage

JSON Schema

Canales de notificación y ayudaGET/journey-service-policy—JSON

Estado HTTP

200

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

contractVersion · channels.channel

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Comprobación de la presentación de vehículosGET/fleet-presentation—JSON

Estado HTTP

200 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

evidence.operatorSamples.operatorId

Fuente e incertidumbre

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

Llamada de ejemplo

GET /api/public/v1/fleet-presentation

JSON Schema

Compartirenlaces y tarjetas sociales3
Crear un enlace para compartirPOST/share-snapshotsbodyJSON

Estado HTTP

200 · 400 · 404 · 409 · 503

Códigos de motivo de error

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

Acceso y límite de solicitudes

Anónimo, se exige un origen de confianza; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

snapshotId · revision

Fuente e incertidumbre

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

Llamada de ejemplo

POST /api/public/v1/share-snapshots

JSON Schema

Estado de un enlace para compartirGET/share-snapshots/{snapshotId}snapshotIdJSON

Estado HTTP

200 · 400 · 404 · 410 · 503

Códigos de motivo de error

—

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

snapshotId · revision

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Tarjeta social de un enlace para compartirGET/share-snapshots/{snapshotId}/opengraphsnapshotIdPNG

Estado HTTP

200 · 400 · 404 · 503

Códigos de motivo de error

invalid_identifier 400 · not_found 404 · temporarily_unavailable 503

Acceso y límite de solicitudes

Acceso anónimo; 60 por minuto cuando el límite distribuido está activo.

Identificadores estables

snapshotId · revision

Fuente e incertidumbre

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

Llamada de ejemplo

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

JSON Schema

Acceso y uso

Acceso y usoLímites, caché, versiones, privacidad y licencia
Acceso
Todos los recursos GET son públicos y gratuitos, con o sin clave. Los recursos masivos y el historial requieren una clave Desarrollador. Los dos recursos POST (crear un enlace para compartir, trazar un recorrido a pie) solo aceptan solicitudes del propio otranspo.ca.
Límite de solicitudes
1,000 llamadas al día y 60 por minuto, con o sin clave gratuita. 100,000 al día y 600 por minuto con el plan Developer. Lee los encabezados X-RateLimit-* en cada respuesta. X-RateLimit-Status te avisa cuándo los límites están reducidos.
Claves
Envía una clave como Authorization: Bearer otr_… o X-API-Key. Nunca en la dirección. Si la clave es incorrecta, fue revocada o venció, recibes un 401, nunca una respuesta sin clave.
Caché
El índice se guarda 30 segundos en tu navegador y 5 minutos en el borde. Los recursos en vivo, como las cancelaciones, se envían sin almacenar. Las piezas de horarios sin conexión no cambian una vez publicadas.
Versiones
Cada respuesta nombra su schema y su schemaVersion. Un cambio incompatible recibe una ruta /v2 nueva, con 180 días de aviso en los encabezados Deprecation, Sunset y Link.
Privacidad
No envíes datos personales. Las coordenadas enviadas al camino por la calle se usan solo para esa solicitud y nunca se registran ni se guardan. Las respuestas nunca contienen identificadores de cuenta, búsquedas de viaje, correos o direcciones de red, ni enlaces internos de pruebas.
Desconocido no es cero
Una respuesta puede no estar disponible aunque el recurso exista. Lee status, evidenceState, las horas de las fuentes, la cobertura y las limitaciones. Los estados de ruta comparan el horario con los autobuses vistos; no son avisos del operador.
Licencia
Código: MIT. Los datos de OC Transpo y STO siguen sus propios términos de datos abiertos y requieren crédito. Nuestras cifras: CC BY 4.0, crédito a otranspo.ca.
Aún no está hecho
No SDK is published, no second city is supported, and partner tenant-key access is not open. This page does not claim them.
Datos y descargasLas mismas cifras como archivos CSV y JSON, con cómo citarlas.