Draft proposal to UCP: lodging search and availability
Status: draft, not filed. Filing upstream is an owner action (implementation plan P2 step 5). Based on UCP main at ad9950ba (2026-10-09).
Problem
dev.ucp.lodging.booking starts from "property, stay, rate plan, and stay date details discovered from upper-funnel search", and PR #780 lists upstream search/discovery and post-purchase management as out of scope. The charter lists availability and rate fetching as future work. Today each platform fills the gap with a proprietary feed, so a small hotel that implements UCP booking is still invisible unless a large connectivity partner carries it.
Proposal
Two capabilities in the lodging service, modelled on the booking capability's conventions (snake_case, minor-unit amounts, totals[] semantics, date_interval, occupancy):
dev.ucp.lodging.availability:POST /availabilitywith property, stay dates, occupancy and rooms; returns provisional offers. Each offer carries theaccommodation_typeandrate_planids accepted by Create Booking Session, all-intotals[](with taxes and mandatory fees itemized and the property-collected part marked), a payment schedule aligned withdev.ucp.common.payment.terms, a machine-readable cancellation schedule, andexpires_at. Offers are explicitly provisional: the booking session remains authoritative.dev.ucp.lodging.search:POST /searchby location radius or place text, stay dates and occupancy, returning property summaries with the availability offers above.
Machine-readable cancellation terms
The cancellation-policy extension classifies refundability but leaves deadlines and penalties as text. We propose an optional structure on the policy item: rules[{ before, penalty_amount }] and final_penalty_amount, in the session currency. Cancelling at time *t* costs the penalty of the first rule with *t* earlier than before, otherwise the final penalty.
Reference implementation
The OpenTravelIndex profile implements all three under its own namespace (<ns>.lodging.search, .availability, .reservation) with Apache-2.0 schemas, a conformance validator, a reference server and a Mews adapter. If the council adopts these capabilities, OTI will switch to the dev.ucp names.
Gaps found mapping real systems (K4)
| System | Field | Gap |
|---|---|---|
| Mews Connector API | Cancellation | Policies come from a beta, restricted endpoint; without it a rate must be presented as non-refundable |
| Mews Connector API | Fees paid at property | Not distinguished from prepaid amounts in reservations/price; OTI marks everything as collected at the property |
| UCP booking | Cancellation deadlines and penalties | Free text only (see above) |