{
    "service": {
        "serviceFamily": "accommodation",
        "serviceCode": "nambo",
        "shortCode": null,
        "title": "Nam Bộ Boutique Hotel",
        "nights": 1,
        "exclusivity": "shared",
        "movement": {
            "kind": "route"
        },
        "counterpart": null,
        "startTimeLocal": "14:00",
        "durationMinutes": null,
        "startPlaceId": null,
        "endPlaceId": null,
        "variants": [
            {
                "axes": {},
                "variantId": "standard",
                "title": "Nam Bộ Boutique Hotel",
                "onSale": true
            }
        ]
    },
    "occupancy": {
        "saleTypes": [
            {
                "id": "junior",
                "resourceClass": "suite",
                "resourceTitle": "Suite",
                "shortCode": null,
                "capacity": 4,
                "maxUnitsPerBooking": 1,
                "inventory": 1,
                "basis": "per-room"
            },
            {
                "id": "main",
                "resourceClass": "suite",
                "resourceTitle": "Suite",
                "shortCode": null,
                "capacity": 3,
                "maxUnitsPerBooking": 4,
                "inventory": 4,
                "basis": "per-room"
            },
            {
                "id": "corner",
                "resourceClass": "suite",
                "resourceTitle": "Suite",
                "shortCode": null,
                "capacity": 2,
                "maxUnitsPerBooking": 2,
                "inventory": 2,
                "basis": "per-room"
            }
        ],
        "compositions": [
            {
                "id": "junior-single",
                "saleTypeId": "junior",
                "adults": 1,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "junior-double",
                "saleTypeId": "junior",
                "adults": 2,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "junior-double-infant",
                "saleTypeId": "junior",
                "adults": 2,
                "children": 0,
                "infants": 1,
                "infantMode": "shared-bed"
            },
            {
                "id": "junior-double-2infants",
                "saleTypeId": "junior",
                "adults": 2,
                "children": 0,
                "infants": 2,
                "infantMode": "shared-bed"
            },
            {
                "id": "junior-double-1child",
                "saleTypeId": "junior",
                "adults": 2,
                "children": 1,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "junior-triple",
                "saleTypeId": "junior",
                "adults": 3,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "junior-double-2children",
                "saleTypeId": "junior",
                "adults": 2,
                "children": 2,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "junior-quad",
                "saleTypeId": "junior",
                "adults": 4,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "main-single",
                "saleTypeId": "main",
                "adults": 1,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "main-double",
                "saleTypeId": "main",
                "adults": 2,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "main-double-infant",
                "saleTypeId": "main",
                "adults": 2,
                "children": 0,
                "infants": 1,
                "infantMode": "shared-bed"
            },
            {
                "id": "main-double-2infants",
                "saleTypeId": "main",
                "adults": 2,
                "children": 0,
                "infants": 2,
                "infantMode": "shared-bed"
            },
            {
                "id": "main-double-1child",
                "saleTypeId": "main",
                "adults": 2,
                "children": 1,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "main-triple",
                "saleTypeId": "main",
                "adults": 3,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "corner-single",
                "saleTypeId": "corner",
                "adults": 1,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "corner-double",
                "saleTypeId": "corner",
                "adults": 2,
                "children": 0,
                "infants": 0,
                "infantMode": null
            },
            {
                "id": "corner-double-infant",
                "saleTypeId": "corner",
                "adults": 2,
                "children": 0,
                "infants": 1,
                "infantMode": "shared-bed"
            },
            {
                "id": "corner-double-2infants",
                "saleTypeId": "corner",
                "adults": 2,
                "children": 0,
                "infants": 2,
                "infantMode": "shared-bed"
            }
        ],
        "ageGroups": [
            {
                "id": "infant",
                "ageFrom": 0,
                "ageTo": 4,
                "source": "family"
            },
            {
                "id": "child",
                "ageFrom": 5,
                "ageTo": 4,
                "source": "family"
            },
            {
                "id": "adult",
                "ageFrom": 5,
                "ageTo": 120,
                "source": "family"
            }
        ]
    },
    "extras": [
        {
            "id": "breakfast",
            "title": "Breakfast at the hotel",
            "basis": "per-person",
            "saleMode": "always",
            "priceRef": "the wiki rates line (A11N_BREAKFAST_SELECTOR); 20% early-booking rebate (A11N_BREAKFAST_EARLYBK_REBATE)",
            "serviceCode": null,
            "free": false
        },
        {
            "id": "extra-guest",
            "title": "Additional guest / extra bed",
            "basis": "per-person",
            "saleMode": "always",
            "priceRef": "the wiki rates line (A11N_EXTRA_GUEST_SELECTOR); standard occupancy 2, the children rules of OFFER_ACCOMMODATION §3 gate it",
            "serviceCode": null,
            "free": false
        },
        {
            "id": "late-checkout",
            "title": "Late check-out",
            "basis": "per-booking",
            "saleMode": "on-request",
            "priceRef": "until 18:00 = 50% of the nightly rate, after = full (A11N_CHECKOUT_FULLRATE_TIME; standard 12:00)",
            "serviceCode": null,
            "free": false
        },
        {
            "id": "cot",
            "title": "Baby cot",
            "basis": "per-booking",
            "saleMode": "on-request",
            "priceRef": "free, subject to availability (the hotels' foldouts)",
            "serviceCode": null,
            "free": true
        }
    ],
    "rules": {
        "cut-off": {
            "value": {
                "days": 5,
                "boundary": "end-of-day",
                "timezone": "Asia/Ho_Chi_Minh"
            },
            "source": "cut-off",
            "enforced": false
        },
        "no-show": {
            "value": {
                "days": 0,
                "boundary": "end-of-day",
                "timezone": "Asia/Ho_Chi_Minh"
            },
            "source": "no-show",
            "enforced": false
        },
        "refund-tiers": {
            "value": {
                "bands": [
                    {
                        "id": "early",
                        "until_days": 5,
                        "retained_pct": 5,
                        "of": "stay",
                        "cap_nights": 0.5,
                        "text": "up to 5 days before arrival: a 5 % administration fee, but no more than 50 % of one night"
                    },
                    {
                        "id": "partial",
                        "until_days": 2,
                        "retained_pct": 50,
                        "of": "night",
                        "text": "between 4 days and 48 hours before arrival: 50 % of one night"
                    },
                    {
                        "id": "late",
                        "until_days": 0,
                        "retained_pct": 100,
                        "of": "night",
                        "text": "less than 48 hours before arrival, or after check-in: 100 % of one night"
                    },
                    {
                        "id": "no-show",
                        "no_show": true,
                        "retained_pct": 100,
                        "of": "stay",
                        "text": "no-show: the full stay"
                    }
                ],
                "anchor": "check-in",
                "boundary": "end-of-day",
                "timezone": "Asia/Ho_Chi_Minh",
                "grace_first": true,
                "norefund_plans": "a rate plan replaces the whole ladder with no-amend, no-refund (F3 §5) — the grace still overrides it"
            },
            "source": "refund-tiers",
            "enforced": true
        },
        "booking-grace": {
            "value": {
                "hours": 0,
                "knob": "booking_grace_hours",
                "effective": "today",
                "from": "booking",
                "precision": "minute",
                "capped_by": "departure",
                "overrides": [
                    "cut-off",
                    "no-show",
                    "no-refund plans"
                ],
                "supplier_charges": "absorbed",
                "enforced": false,
                "enforced_by": [
                    "native-api cancel (Rules::refundFor, 05-Sep-2026)",
                    "certified-channel cancel (libAPI, 11-Sep-2026)"
                ]
            },
            "source": "booking-grace",
            "enforced": true
        },
        "hold-ttl": {
            "value": {
                "minutes": 15,
                "stated_minutes": 15,
                "cap_hours": 24,
                "from": "hold",
                "told": "nobody",
                "then": "confirm re-reads the feed and tells the desk"
            },
            "source": "hold-ttl",
            "enforced": true
        }
    },
    "content": {}
}