What the API offers
Families on sale, as the wire lists them (never from the contract's enum): accommodation.
Services
| service | title | nights | exclusivity | variants | sale types | |
|---|---|---|---|---|---|---|
accommodation/nambo | Nam Bộ Boutique Hotel | 1 | shared | standard |
junior main corner |
detail → |
accommodation/lighthouse | the Lighthouse | 1 | shared | standard |
main corner cozy standard |
detail → |
Assets — resource classes and what is sold of them
suite Suite on accommodation/nambo
| sale type | basis | capacity (people per unit) | max units / booking | inventory (units on the channel) | sold on |
|---|---|---|---|---|---|
junior | per-room | 4 | 1 | 1 | accommodation/nambo |
main | per-room | 3 | 4 | 4 | accommodation/nambo |
corner | per-room | 2 | 2 | 2 | accommodation/nambo |
flat Main Suite on accommodation/lighthouse
| sale type | basis | capacity (people per unit) | max units / booking | inventory (units on the channel) | sold on |
|---|---|---|---|---|---|
main | per-room | 3 | 2 | 2 | accommodation/lighthouse |
corner | per-room | 4 | 1 | 1 | accommodation/lighthouse |
cozy | per-room | 3 | 0 | 0 | accommodation/lighthouse |
standard | per-room | 2 | 1 | 1 | accommodation/lighthouse |
Pictures
⊘ No service payload carries a picture reference — no contentRefs, no URL-shaped value, nothing under /media/. The page shows none rather than a placeholder.
Calendar, in brief
30 days from 2026-09-07 cost 30 requests (one per day: the contract declares no range call). States seen: on-sale ×43 full ×17 . the grid →
Probes — what the contract says must be refused
| probe | expected | got | |
|---|---|---|---|
| ✗ | a family token that is not in the contract's enumGET /services | 404 family-unknown | 200 200 ; 2 services returned — the filter was ignored |
| ✗ | the family `overnight-cruise` (in the enum, not listed)GET /services | 404 family-unmodelled, or a filtered list without it | 200 200 ; 2 of 2 services returned, none of them `overnight-cruise` |
| ✔ | GET /services/overnight-cruise/anythingGET /services/{serviceFamily}/{serviceCode} | 404 family-unmodelled | 404 family-unmodelled 404 family-unmodelled |
| ✔ | GET /services/accommodation/no-such-serviceGET /services/{serviceFamily}/{serviceCode} | 404 service-unknown | 404 service-unknown 404 service-unknown |
| ✔ | GET /availability with no dateGET /availability | a refusal in the contract's error shape (the contract declares date required but no 422 for it) | 422 field-invalid 422 field-invalid (contract body) |
| ✔ | POST /quote naming a sale type that does not existPOST /quote | 422 party-impossible or itinerary-not-quotable | 422 itinerary-not-quotable 422 itinerary-not-quotable |
| ✔ | POST /quote naming a variant that does not existPOST /quote | 404 variant-unknown | 404 variant-unknown 404 variant-unknown |
| ✔ | POST /bookings with no keyPOST /bookings | 401 key-missing | 401 key-missing 401 key-missing |
| ✔ | GET /bookings/{id} with no keyGET /bookings/{bookingId} | 401 key-missing | 401 key-missing 401 key-missing |
| ✗ | OPTIONS /services — the headers CORS namesOPTIONS /services | only headers this contract defines (Authorization, Content-Type) | 204 names Octo-Capabilities |
The front door
| url | status | describes this contract | names another base | excerpt |
|---|---|---|---|---|
https://api.transmekong.com/ | 200 | no | https://octo.transmekong.com/v1 | TransMékong Developer API :root { --tm-bg: #fdfcf8; --tm-header: #eae0af; --tm-text: #222; --tm-accent: #63574c; } * { box-sizing: border-b |
https://api.transmekong.com/llms.txt | 200 | no | https://octo.transmekong.com/v1 | # TransMékong / Bassac cruises — API for agents and integrators > Bassac (TransMékong) runs one-night Mekong Delta river cruises between > C |
https://api.transmekong.com/v1/openapi.yaml | 404 | no | 404 Not Found @media (prefers-color-scheme:dark){body{background-color:#000!important}} 404 Not Found The resource requested could not be f | |
https://api.transmekong.com/v1/ | 404 | no | 404 Not Found @media (prefers-color-scheme:dark){body{background-color:#000!important}} 404 Not Found The resource requested could not be f |