Reference
REST API
All 11 operations, generated from the same document the server serves. Base URL https://swisstouristy.com/api/public/v1.
The machine-readable contract is openapi.json (also YAML). This page is rendered from it. A route not described there does not exist.
List Transfer Services
Response 200
| Field | Type | Notes |
|---|---|---|
| services | array |
Get Route By Pair
Origin/destination form. Exists so this surface and the MCP surface accept the same address forms — §B: one contract, not two dialects.
Parameters
originin queryrequireddestinationin queryrequired
Response 200
| Field | Type | Notes |
|---|---|---|
| destinationreq | string | |
| distance_km | number | null | |
| duration_min | integer | null | |
| live_context | object | null | |
| normalized_destination | string | |
| normalized_origin | string | |
| originreq | string | |
| quotable | boolean | |
| route_contract_version | string | null | |
| route_keyreq | string | |
| routing_basis | string | null | |
| transfer_typereq | string | |
| verification_statereq | string | |
| waypoints | array |
Get Route
Parameters
route_keyin pathrequired
Response 200
| Field | Type | Notes |
|---|---|---|
| destinationreq | string | |
| distance_km | number | null | |
| duration_min | integer | null | |
| live_context | object | null | |
| normalized_destination | string | |
| normalized_origin | string | |
| originreq | string | |
| quotable | boolean | |
| route_contract_version | string | null | |
| route_keyreq | string | |
| routing_basis | string | null | |
| transfer_typereq | string | |
| verification_statereq | string | |
| waypoints | array |
List Vehicle Classes
Response 200
| Field | Type | Notes |
|---|---|---|
| luggage_definitions | object | |
| special_item_kinds | array | |
| vehicle_classes | array |
Get Policy
Parameters
policy_keyin pathrequired
Response 200
| Field | Type | Notes |
|---|---|---|
| full_refund_cutoff_hoursreq | number | |
| policy_keyreq | string | |
| policy_textreq | string | |
| policy_versionreq | string |
Get Quote Requirements
Response 200
| Field | Type | Notes |
|---|---|---|
| bookability_states | array | |
| fields | array | |
| notesreq | string |
Create Quote Intent
Anonymous, rate-limited, non-binding estimate. Nothing is persisted, no quote id is issued, and no contact is created.
Request body
| Field | Type | Notes |
|---|---|---|
| adults | integer | null | |
| booking_type | string | |
| children | integer | |
| destinationreq | string | |
| distance_km | number | null | |
| duration_hours | number | null | |
| duration_min | integer | null | |
| infants | integer | |
| luggage | integer | |
| originreq | string | |
| passengers | integer | |
| pickup_datetimereq | string | |
| waiting_minutes | integer | |
| waypoints | array | null |
Response 200
| Field | Type | Notes |
|---|---|---|
| adultsreq | integer | |
| children | integer | |
| currency | string | |
| destinationreq | string | |
| expires_at | string | null | |
| infants | integer | |
| limitations | array | |
| luggagereq | integer | |
| non_binding | boolean | |
| options | array | |
| originreq | string | |
| passengersreq | integer | |
| pickup_datetime | string | null | |
| quote_id | string | null | |
| request_id | string | null | |
| requires_manual_confirmation | boolean | |
| reservation_status | string | |
| return_datetime | string | null | |
| route_basisreq | — | |
| statusreq | string | |
| waypoints | array |
Create Quote
Create an authoritative, owned, persisted quote. The route is measured on the server and the snapshot carries full route provenance, so the resulting quote id is one the booking path will accept. Still not a booking and not a capacity hold.
Parameters
Idempotency-Keyin header
Request body
| Field | Type | Notes |
|---|---|---|
| adults | integer | null | |
| booking_type | string | |
| children | integer | |
| destinationreq | string | |
| duration_hours | number | null | |
| infants | integer | |
| luggage | integer | |
| originreq | string | |
| passengers | integer | |
| pickup_datetimereq | string | |
| return_datetime | string | null | |
| waiting_minutes | integer | |
| waypoints | array | null |
Response 200
| Field | Type | Notes |
|---|---|---|
| adultsreq | integer | |
| children | integer | |
| currency | string | |
| destinationreq | string | |
| expires_at | string | null | |
| infants | integer | |
| limitations | array | |
| luggagereq | integer | |
| non_binding | boolean | |
| options | array | |
| originreq | string | |
| passengersreq | integer | |
| pickup_datetime | string | null | |
| quote_id | string | null | |
| request_id | string | null | |
| requires_manual_confirmation | boolean | |
| reservation_status | string | |
| return_datetime | string | null | |
| route_basisreq | — | |
| statusreq | string | |
| waypoints | array |
Get Own Quote
Owner-only. A quote belonging to another caller and a quote that does not exist are answered identically — see quoting.get_own_quote for why.
Parameters
quote_idin pathrequired
Response 200
| Field | Type | Notes |
|---|---|---|
| adultsreq | integer | |
| children | integer | |
| currency | string | |
| destinationreq | string | |
| expires_at | string | null | |
| infants | integer | |
| limitations | array | |
| luggagereq | integer | |
| non_binding | boolean | |
| options | array | |
| originreq | string | |
| passengersreq | integer | |
| pickup_datetime | string | null | |
| quote_id | string | null | |
| request_id | string | null | |
| requires_manual_confirmation | boolean | |
| reservation_status | string | |
| return_datetime | string | null | |
| route_basisreq | — | |
| statusreq | string | |
| waypoints | array |
Create Checkout Handoff
Hand the traveler off to Swiss Touristy's hosted checkout. Creates no booking, no PaymentIntent and no capacity hold, and returns no Stripe identifier or secret. Payment happens on Swiss Touristy. Gated by PUBLIC_CHECKOUT_ENABLED, shared with the internal surface so there is one answer to "is public checkout live anywhere".
Parameters
Idempotency-Keyin header
Request body
| Field | Type | Notes |
|---|---|---|
| fleet_idreq | integer | |
| quote_idreq | string | |
| traveler_approvalreq | boolean |
Response 200
| Field | Type | Notes |
|---|---|---|
| checkout_urlreq | string | |
| currencyreq | string | |
| expires_at | string | null | |
| fleet_idreq | integer | |
| non_binding | boolean | |
| quote_idreq | string | |
| request_id | string | null | |
| reservation_status | string | |
| status | string | |
| total_pricereq | number |
Resolve Checkout Handoff
Read the quote behind a continuation link. Anonymous by necessity: the traveler following the link is not the agent that created the quote, so no OAuth identity can be required. The continuation signature is the credential — it is keyed with SECRET_KEY, covers the quote id, the vehicle and the expiry, and grants nothing except reading this one quote's commercial terms. Without this the handoff cannot preserve quote identity: the receiving page would have to re-price the journey, and the traveler could be shown one amount by the agent and charged another.
Parameters
quote_idin pathrequiredfleet_idin queryrequiredsigin queryrequired
Response 200
| Field | Type | Notes |
|---|---|---|
| checkout_urlreq | string | |
| currencyreq | string | |
| expires_at | string | null | |
| fleet_idreq | integer | |
| non_binding | boolean | |
| quote_idreq | string | |
| request_id | string | null | |
| reservation_status | string | |
| status | string | |
| total_pricereq | number |