Every exchange behind these pages
Newest first. Bearer keys are redacted at capture — nothing here ever held one.
#268 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/ → 404 19 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: text/html
< transfer-encoding: chunked
< connection: keep-alive
< cache-control: private, no-cache, max-age=0
< pragma: no-cache
< x-turbo-charged-by: LiteSpeed
< content-encoding: gzip
< vary: Accept-Encoding
< strict-transport-security: max-age=63072000; preload
<!DOCTYPE html>
<html style="height:100%">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title> 404 Not Found
</title><style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}</style></head>
<body style="color: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;">
<div style="height:auto; min-height:100%; "> <div style="text-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;">
<h1 style="margin:0; font-size:150px; line-height:150px; font-weight:bold;">404</h1>
<h2 style="margin-top:20px;font-size: 30px;">Not Found
</h2>
<p>The resource requested could not be found on this server!</p>
</div></div><div style="color:#f0f0f0; font-size:12px;margin:auto;padding:0px 30px 0px 30px;position:relative;clear:both;height:100px;margin-top:-101px;background-color:#474747;border-top: 1px solid rgba(0,0,0,0.15);box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset;">
<br>Proudly powered by LiteSpeed Web Server<p>Please be advised that LiteSpeed Technologies Inc. is not a web hosting company and, as such, has no control over content found on this site.</p></div></body></html>
#267 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/openapi.yaml → 404 20 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: text/html
< transfer-encoding: chunked
< connection: keep-alive
< cache-control: private, no-cache, max-age=0
< pragma: no-cache
< x-turbo-charged-by: LiteSpeed
< content-encoding: gzip
< vary: Accept-Encoding
< strict-transport-security: max-age=63072000; preload
<!DOCTYPE html>
<html style="height:100%">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title> 404 Not Found
</title><style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}</style></head>
<body style="color: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;">
<div style="height:auto; min-height:100%; "> <div style="text-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;">
<h1 style="margin:0; font-size:150px; line-height:150px; font-weight:bold;">404</h1>
<h2 style="margin-top:20px;font-size: 30px;">Not Found
</h2>
<p>The resource requested could not be found on this server!</p>
</div></div><div style="color:#f0f0f0; font-size:12px;margin:auto;padding:0px 30px 0px 30px;position:relative;clear:both;height:100px;margin-top:-101px;background-color:#474747;border-top: 1px solid rgba(0,0,0,0.15);box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset;">
<br>Proudly powered by LiteSpeed Web Server<p>Please be advised that LiteSpeed Technologies Inc. is not a web hosting company and, as such, has no control over content found on this site.</p></div></body></html>
#266 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/llms.txt → 200 22 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: text/plain
< content-length: 774
< connection: keep-alive
< etag: "58f-6a9ef6fa-a057a;gz"
< last-modified: Mon, 07 Sep 2026 17:40:10 GMT
< accept-ranges: bytes
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< strict-transport-security: max-age=63072000; preload
< x-served-by: api.transmekong.com
# TransMékong / Bassac cruises — API for agents and integrators
> Bassac (TransMékong) runs one-night Mekong Delta river cruises between
> Cái Bè and Cần Thơ, Vietnam. This API follows the OCTO standard
> (https://octo.travel) for tours & activities.
Base URL: https://octo.transmekong.com/v1
(scheduler.transmekong.com/api/v1 is a permanent alias of the same API.)
## Discovery (open, no key required)
- GET /v1/supplier — who we are
- GET /v1/products — sellable itineraries (currently caibe-cantho,
cantho-caibe, cantho-cantho); units are twin/double cabins, paxCount 2
each — sold by the cabin, not by the passenger
- POST /v1/availability/calendar — date-range availability
- POST /v1/availability — a specific date/cabin-mix check
Availability ranges are capped at 92 days per request.
## Booking (requires a bearer key with the `hold` competence)
- POST /v1/bookings — Booking Reservation (a temporary hold)
- POST /v1/bookings/{uuid}/confirm — Booking Confirmation
## Get a key
- Read-only key, no partner account needed:
https://octo.transmekong.com/getakey.php
- Booking-capable key, for existing partners:
https://partner.transmekong.com/pApiKey.php
## Documentation
- Integration guide: https://partner.transmekong.com/serve_userguide.php?f=papi
- Terms of use: https://partner.transmekong.com/api_terms.php
## Contact
bassac@mekong-delta.com — +84 (0)292 382 9540
#265 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/ → 200 33 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: text/html; charset=UTF-8
< content-length: 1755
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TransMékong Developer API</title>
<style>
:root { --tm-bg: #fdfcf8; --tm-header: #eae0af; --tm-text: #222; --tm-accent: #63574c; }
* { box-sizing: border-box; }
body { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
margin: 0; background: var(--tm-bg); color: var(--tm-text); line-height: 1.65; }
.site-bar { background: var(--tm-header); padding: 8px 18px; font-size: 0.95em;
border-bottom: 1px solid #ccc; }
.site-bar a { color: #333; text-decoration: none; font-weight: bold; }
.wrap { max-width: 720px; margin: 0 auto; padding: 22px 18px 56px; }
h1 { color: #222; border-bottom: 2px solid var(--tm-header); padding-bottom: 8px; margin-top: 0.4em; }
h2 { color: #4f463d; margin-top: 1.8em; font-size: 1.15em; }
a { color: #6a5a3c; }
code { background: #f0ede0; padding: 2px 6px; border-radius: 3px; font-size: 0.9em; }
.base { display: inline-block; background: #fff; border: 1px solid #e2dcc7; border-radius: 5px;
padding: 8px 14px; font-size: 1.05em; margin-top: 6px; }
ul.ep { list-style: none; padding-left: 0; }
ul.ep li { padding: 5px 0; border-bottom: 1px solid #efe9d6; }
.verb { display: inline-block; min-width: 3.4em; font-weight: bold; font-size: 0.82em;
color: #6a5a3c; }
.cta { display: inline-block; background: var(--tm-accent); color: #fff; text-decoration: none;
border-radius: 4px; padding: 10px 22px; margin-top: 10px; font-weight: bold; }
.cta:hover { background: #4f463d; }
.foot { margin-top: 2.6rem; font-size: 0.9em; color: #777; }
</style>
</head>
<body>
<div class="site-bar"><a href="/">TransMékong · Developer API</a></div>
<div class="wrap">
<h1>TransMékong Developer API</h1>
<p>Bassac (TransMékong) runs one-night Mekong Delta river cruises between Cái Bè and Cần Thơ,
Vietnam. This API follows the <a href="https://octo.travel">OCTO</a> standard for tours &
activities — supplier, products, availability, and the booking lifecycle.</p>
<p><span class="base">Base URL <code>https://octo.transmekong.com/v1</code></span></p>
<h2>Discovery — open, no key required</h2>
<ul class="ep">
<li><span class="verb">GET</span> <a href="/v1/supplier">/v1/supplier</a> — who we are</li>
<li><span class="verb">GET</span> <a href="/v1/products">/v1/products</a> — sellable itineraries (cabins are twin/double, sold by the cabin)</li>
<li><span class="verb">GET</span> <a href="/v1/capabilities">/v1/capabilities</a> — supported OCTO capabilities</li>
<li><span class="verb">POST</span> <code>/v1/availability/calendar</code> — date-range availability</li>
<li><span class="verb">POST</span> <
#264 2026-09-07T18:13:06+00:00 OPTIONS https://api.transmekong.com/v1/services → 204 30 ms
> Accept: application/json > User-Agent: api-client/0.1.0 (+https://client.bassac.vn) < server: openresty < date: Mon, 07 Sep 2026 18:13:06 GMT < content-type: text/html; charset=UTF-8 < connection: keep-alive < strict-transport-security: max-age=0, max-age=63072000; preload < access-control-allow-origin: * < access-control-allow-methods: GET, POST, OPTIONS < access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities < access-control-expose-headers: Octo-Capabilities < access-control-max-age: 86400 < x-turbo-charged-by: LiteSpeed < x-served-by: api.transmekong.com
#263 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/bookings/no.such.booking → 401 38 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 142
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "key-missing",
"message": "No API key on this request: send it as `Authorization: Bearer \u003ckey\u003e` \u2014 the header, nowhere else."
}
#262 2026-09-07T18:13:06+00:00 POST https://api.transmekong.com/v1/bookings → 401 39 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
> Content-Type: application/json
> {"attemptKey": "b4b054a2-2a68-416d-bcf3-780c4d6ff5a3"}
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 142
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "key-missing",
"message": "No API key on this request: send it as `Authorization: Bearer \u003ckey\u003e` \u2014 the header, nowhere else."
}
#261 2026-09-07T18:13:06+00:00 POST https://api.transmekong.com/v1/quote → 404 49 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
> Content-Type: application/json
> {"date": "2026-09-21", "lines": [{"nights": 1, "qty": 1, "saleTypeId": "junior"}], "serviceCode": "nambo", "serviceFamily": "accommodation", "variantId": "no-such-variant"}
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 110
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "variant-unknown",
"message": "`no-such-variant` \u2014 the one variant on sale is `standard`"
}
#260 2026-09-07T18:13:06+00:00 POST https://api.transmekong.com/v1/quote → 422 77 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
> Content-Type: application/json
> {"date": "2026-09-21", "lines": [{"nights": 1, "qty": 1, "saleTypeId": "no-such-sale-type"}], "serviceCode": "nambo", "serviceFamily": "accommodation", "variantId": "standard"}
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 132
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "itinerary-not-quotable",
"message": "no sale type `no-such-sale-type` \u2014 the categories are junior, main, corner."
}
#259 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/availability → 422 23 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 88
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "field-invalid",
"message": "`date` is required, Y-m-d"
}
#258 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/services/accommodation/no-such-service → 404 52 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 129
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "service-unknown",
"message": "`accommodation/no-such-service` is not a service the model lists \u2014 nambo, lighthouse"
}
#257 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/services/overnight-cruise/anything → 404 25 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 140
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "family-unmodelled",
"message": "`overnight-cruise` is not sold on this surface yet \u2014 the model answers accommodation here today."
}
#256 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/services?serviceFamily=overnight-cruise → 200 37 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< transfer-encoding: chunked
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"services": [
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "junior-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 1,
"id": "junior-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 3,
"children": 0,
"id": "junior-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 2,
"id": "junior-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 4,
"children": 0,
"id": "junior-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 4,
"id": "junior",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 4,
"maxUnitsPerBooking": 4,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "corner",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
}
],
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"title": "Nam B\u1ed9 Boutique Hotel",
"variants": [
{
"axes": [],
"onSale": true,
"title": "Nam B\u1ed9 Boutique Hotel",
"variantId": "standard"
}
]
},
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 1,
"id": "corner-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 3,
"children": 0,
"id": "corner-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 2,
"id": "corner-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 4,
"children": 0,
"id": "corner-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 1,
"children": 0,
"id": "cozy-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 1,
"id": "cozy-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 3,
"children": 0,
"id": "cozy-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 1,
"children": 0,
"id": "standard-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "standard"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "flat",
"resourceTitle": "Main Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 4,
"id": "corner",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "River Front Corner Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "cozy",
"inventory": 0,
"maxUnitsPerBooking": 0,
"resourceClass": "flat",
"resourceTitle": "River Front Cozy Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "standard",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "Standard room #22",
"shortCode": null
}
],
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"title": "the Lighthouse",
"variants": [
{
"axes": [],
"onSale": true,
"title": "the Lighthouse",
"variantId": "standard"
}
]
}
]
}
#255 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/services?serviceFamily=not-a-family → 200 39 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< transfer-encoding: chunked
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"services": [
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "junior-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 1,
"id": "junior-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 3,
"children": 0,
"id": "junior-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 2,
"id": "junior-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 4,
"children": 0,
"id": "junior-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 4,
"id": "junior",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 4,
"maxUnitsPerBooking": 4,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "corner",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
}
],
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"title": "Nam B\u1ed9 Boutique Hotel",
"variants": [
{
"axes": [],
"onSale": true,
"title": "Nam B\u1ed9 Boutique Hotel",
"variantId": "standard"
}
]
},
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 1,
"id": "corner-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 3,
"children": 0,
"id": "corner-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 2,
"id": "corner-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 4,
"children": 0,
"id": "corner-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 1,
"children": 0,
"id": "cozy-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 1,
"id": "cozy-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 3,
"children": 0,
"id": "cozy-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 1,
"children": 0,
"id": "standard-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "standard"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "flat",
"resourceTitle": "Main Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 4,
"id": "corner",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "River Front Corner Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "cozy",
"inventory": 0,
"maxUnitsPerBooking": 0,
"resourceClass": "flat",
"resourceTitle": "River Front Cozy Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "standard",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "Standard room #22",
"shortCode": null
}
],
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"title": "the Lighthouse",
"variants": [
{
"axes": [],
"onSale": true,
"title": "the Lighthouse",
"variantId": "standard"
}
]
}
]
}
#254 2026-09-07T18:13:06+00:00 POST https://api.transmekong.com/v1/quote → 422 43 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
> Content-Type: application/json
> {"date": "2026-09-07", "lines": [{"nights": 1, "qty": 1, "saleTypeId": "main"}], "serviceCode": "lighthouse", "serviceFamily": "accommodation", "variantId": "standard"}
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 84
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "field-invalid",
"message": "`date` is in the past"
}
#253 2026-09-07T18:13:06+00:00 POST https://api.transmekong.com/v1/quote → 422 38 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
> Content-Type: application/json
> {"date": "2026-09-07", "lines": [{"nights": 1, "qty": 1, "saleTypeId": "junior"}], "serviceCode": "nambo", "serviceFamily": "accommodation", "variantId": "standard"}
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 84
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
{
"error": "field-invalid",
"message": "`date` is in the past"
}
#252 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-06 → 200 64 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-06",
"entries": [
{
"asOf": "2026-09-07 17:00:05",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:16",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 1,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#251 2026-09-07T18:13:06+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-05 → 200 72 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 289
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-05",
"entries": [
{
"asOf": "2026-09-07 17:00:05",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:16",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 1,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#250 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-04 → 200 50 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:06 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-04",
"entries": [
{
"asOf": "2026-09-07 17:00:05",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:16",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#249 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-03 → 200 60 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 288
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-03",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 1,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#248 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-02 → 200 57 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 285
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-02",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#247 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-10-01 → 200 284 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 285
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-10-01",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#246 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-30 → 200 52 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-30",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#245 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-29 → 200 46 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-29",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#244 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-28 → 200 51 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 289
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-28",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 0,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 1,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#243 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-27 → 200 70 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 288
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-27",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 0,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 1,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#242 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-26 → 200 69 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-26",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#241 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-25 → 200 60 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-25",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 3,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#240 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-24 → 200 44 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-24",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#239 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-23 → 200 57 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-23",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#238 2026-09-07T18:13:05+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-22 → 200 60 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 285
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-22",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 1,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#237 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-21 → 200 70 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:05 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-21",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#236 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-20 → 200 46 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-20",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#235 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-19 → 200 55 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-19",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#234 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-18 → 200 69 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-18",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 3,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#233 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-17 → 200 70 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 284
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-17",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 2,
"saleTypeId": "main"
},
{
"count": 1,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#232 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-16 → 200 59 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-16",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 2,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#231 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-15 → 200 49 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-15",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 3,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#230 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-14 → 200 66 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 287
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-14",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "full",
"vacancies": [
{
"count": 0,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#229 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-13 → 200 52 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 284
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-13",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:14",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#228 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-12 → 200 67 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 280
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-12",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 0,
"saleTypeId": "junior"
},
{
"count": 3,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#227 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-11 → 200 57 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 286
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-11",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 0,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 1,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#226 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-10 → 200 47 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 285
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-10",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#225 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-09 → 200 69 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 284
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-09",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#224 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-08 → 200 53 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 285
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-08",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 3,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 0,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#223 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/availability?date=2026-09-07 → 200 66 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< content-length: 286
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"date": "2026-09-07",
"entries": [
{
"asOf": "2026-09-07 17:00:04",
"nights": 1,
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "junior"
},
{
"count": 4,
"saleTypeId": "main"
},
{
"count": 2,
"saleTypeId": "corner"
}
],
"variantId": "standard"
},
{
"asOf": "2026-09-07 17:00:13",
"nights": 1,
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"state": "on-sale",
"vacancies": [
{
"count": 1,
"saleTypeId": "main"
},
{
"count": 0,
"saleTypeId": "corner"
},
{
"count": 0,
"saleTypeId": "cozy"
},
{
"count": 1,
"saleTypeId": "standard"
}
],
"variantId": "standard"
}
]
}
#222 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/services/accommodation/lighthouse → 200 60 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< transfer-encoding: chunked
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 1,
"id": "corner-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 3,
"children": 0,
"id": "corner-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 2,
"id": "corner-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 4,
"children": 0,
"id": "corner-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 1,
"children": 0,
"id": "cozy-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 1,
"id": "cozy-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 3,
"children": 0,
"id": "cozy-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 1,
"children": 0,
"id": "standard-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "standard"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "flat",
"resourceTitle": "Main Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 4,
"id": "corner",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "River Front Corner Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "cozy",
"inventory": 0,
"maxUnitsPerBooking": 0,
"resourceClass": "flat",
"resourceTitle": "River Front Cozy Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "standard",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "Standard room #22",
"shortCode": null
}
],
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"title": "the Lighthouse",
"variants": [
{
"axes": [],
"onSale": true,
"title": "the Lighthouse",
"variantId": "standard"
}
]
}
#221 2026-09-07T18:13:04+00:00 GET https://api.transmekong.com/v1/services/accommodation/nambo → 200 53 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:04 GMT
< content-type: application/json; charset=utf-8
< transfer-encoding: chunked
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "junior-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 1,
"id": "junior-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 3,
"children": 0,
"id": "junior-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 2,
"id": "junior-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 4,
"children": 0,
"id": "junior-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 4,
"id": "junior",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 4,
"maxUnitsPerBooking": 4,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "corner",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
}
],
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"title": "Nam B\u1ed9 Boutique Hotel",
"variants": [
{
"axes": [],
"onSale": true,
"title": "Nam B\u1ed9 Boutique Hotel",
"variantId": "standard"
}
]
}
#220 2026-09-07T18:13:03+00:00 GET https://api.transmekong.com/v1/services → 200 140 ms
> Accept: application/json
> User-Agent: api-client/0.1.0 (+https://client.bassac.vn)
< server: openresty
< date: Mon, 07 Sep 2026 18:13:03 GMT
< content-type: application/json; charset=utf-8
< transfer-encoding: chunked
< connection: keep-alive
< strict-transport-security: max-age=0, max-age=63072000; preload
< access-control-allow-origin: *
< access-control-allow-methods: GET, POST, OPTIONS
< access-control-allow-headers: Authorization, Content-Type, Octo-Capabilities
< access-control-expose-headers: Octo-Capabilities
< access-control-max-age: 86400
< content-encoding: gzip
< vary: Accept-Encoding
< x-turbo-charged-by: LiteSpeed
< x-served-by: api.transmekong.com
{
"services": [
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "junior-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 0,
"id": "junior-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 1,
"id": "junior-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 3,
"children": 0,
"id": "junior-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 2,
"children": 2,
"id": "junior-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 4,
"children": 0,
"id": "junior-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "junior"
},
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 4,
"id": "junior",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 4,
"maxUnitsPerBooking": 4,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "corner",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "suite",
"resourceTitle": "Suite",
"shortCode": null
}
],
"serviceCode": "nambo",
"serviceFamily": "accommodation",
"title": "Nam B\u1ed9 Boutique Hotel",
"variants": [
{
"axes": [],
"onSale": true,
"title": "Nam B\u1ed9 Boutique Hotel",
"variantId": "standard"
}
]
},
{
"ageGroups": [
{
"ageFrom": 0,
"ageTo": 4,
"id": "infant",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 4,
"id": "child",
"level": "family"
},
{
"ageFrom": 5,
"ageTo": 120,
"id": "adult",
"level": "family"
}
],
"compositions": [
{
"adults": 1,
"children": 0,
"id": "main-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 0,
"id": "main-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "main"
},
{
"adults": 2,
"children": 1,
"id": "main-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 3,
"children": 0,
"id": "main-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "main"
},
{
"adults": 1,
"children": 0,
"id": "corner-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 0,
"id": "corner-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 1,
"id": "corner-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 3,
"children": 0,
"id": "corner-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 2,
"children": 2,
"id": "corner-double-2children",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 4,
"children": 0,
"id": "corner-quad",
"infantMode": null,
"infants": 0,
"saleTypeId": "corner"
},
{
"adults": 1,
"children": 0,
"id": "cozy-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 0,
"id": "cozy-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "cozy"
},
{
"adults": 2,
"children": 1,
"id": "cozy-double-1child",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 3,
"children": 0,
"id": "cozy-triple",
"infantMode": null,
"infants": 0,
"saleTypeId": "cozy"
},
{
"adults": 1,
"children": 0,
"id": "standard-single",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double",
"infantMode": null,
"infants": 0,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-infant",
"infantMode": "shared-bed",
"infants": 1,
"saleTypeId": "standard"
},
{
"adults": 2,
"children": 0,
"id": "standard-double-2infants",
"infantMode": "shared-bed",
"infants": 2,
"saleTypeId": "standard"
}
],
"content": [],
"counterpart": null,
"disembarkPlaceId": null,
"durationMinutes": null,
"embarkPlaceId": null,
"embarkTimeLocal": "14:00",
"exclusivity": "shared",
"extras": [
{
"basis": "per-person",
"free": false,
"id": "breakfast",
"saleMode": "always",
"title": "Breakfast at the hotel"
},
{
"basis": "per-person",
"free": false,
"id": "extra-guest",
"saleMode": "always",
"title": "Additional guest / extra bed"
},
{
"basis": "per-booking",
"free": false,
"id": "late-checkout",
"saleMode": "on-request",
"title": "Late check-out"
},
{
"basis": "per-booking",
"free": true,
"id": "cot",
"saleMode": "on-request",
"title": "Baby cot"
}
],
"itinerary": {
"kind": "route"
},
"nights": 1,
"rules": {
"booking-grace": {
"enforced": false,
"source": "booking-grace",
"value": {
"capped_by": "departure",
"enforced": false,
"enforced_by": [
"native-api cancel (Rules::refundFor, 05-Sep-2026)"
],
"from": "booking",
"hours": 24,
"overrides": [
"cut-off",
"no-show",
"no-refund plans"
],
"precision": "minute",
"supplier_charges": "absorbed"
}
},
"cut-off": {
"enforced": true,
"source": "cut-off",
"value": {
"boundary": "end-of-day",
"days": 5,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"hold-ttl": {
"enforced": true,
"source": "hold-ttl",
"value": {
"from": "hold",
"minutes": 15,
"then": "confirm re-reads the feed and tells the desk",
"told": "nobody"
}
},
"no-show": {
"enforced": true,
"source": "no-show",
"value": {
"boundary": "end-of-day",
"days": 0,
"timezone": "Asia/Ho_Chi_Minh"
}
},
"refund-tiers": {
"enforced": true,
"source": "refund-tiers",
"value": {
"anchor": "check-in",
"bands": [
{
"cap_nights": 0.5,
"id": "early",
"of": "stay",
"retained_pct": 5,
"text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night",
"until_days": 5
},
{
"id": "partial",
"of": "night",
"retained_pct": 50,
"text": "between 4 days and 48 hours before arrival: 50 % of one night",
"until_days": 2
},
{
"id": "late",
"of": "night",
"retained_pct": 100,
"text": "less than 48 hours before arrival, or after check-in: 100 % of one night",
"until_days": 0
},
{
"id": "no-show",
"no_show": true,
"of": "stay",
"retained_pct": 100,
"text": "no-show: the full stay"
}
],
"boundary": "end-of-day",
"grace_first": true,
"norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 \u00a75) \u2014 the grace still overrides it",
"timezone": "Asia/Ho_Chi_Minh"
}
}
},
"saleTypes": [
{
"basis": "per-room",
"capacity": 3,
"id": "main",
"inventory": 2,
"maxUnitsPerBooking": 2,
"resourceClass": "flat",
"resourceTitle": "Main Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 4,
"id": "corner",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "River Front Corner Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 3,
"id": "cozy",
"inventory": 0,
"maxUnitsPerBooking": 0,
"resourceClass": "flat",
"resourceTitle": "River Front Cozy Suite",
"shortCode": null
},
{
"basis": "per-room",
"capacity": 2,
"id": "standard",
"inventory": 1,
"maxUnitsPerBooking": 1,
"resourceClass": "flat",
"resourceTitle": "Standard room #22",
"shortCode": null
}
],
"serviceCode": "lighthouse",
"serviceFamily": "accommodation",
"title": "the Lighthouse",
"variants": [
{
"axes": [],
"onSale": true,
"title": "the Lighthouse",
"variantId": "standard"
}
]
}
]
}