Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /v1/products/:id/accommodations/sets | List accommodation sets for a product. |
| POST | /v1/products/:id/accommodations/sets | Create an accommodation set. |
| PATCH | /v1/products/:id/accommodations/sets/:setId | Update an accommodation set. |
| DELETE | /v1/products/:id/accommodations/sets/:setId | Delete an accommodation set. |
| GET | /v1/products/:id/accommodations/sets/:setId/items | List candidate items in a set. |
| POST | /v1/products/:id/accommodations/sets/:setId/items | Create a candidate item. |
| PATCH | /v1/products/:id/accommodations/sets/:setId/items/:itemId | Update a candidate item. |
| DELETE | /v1/products/:id/accommodations/sets/:setId/items/:itemId | Delete a candidate item. |
Read endpoints require
products:read; mutations require products:write. All routes are scoped to the current workspace and rely on Upstash Redis for caching alongside Postgres persistence.Key concepts
- Accommodation sets group candidate properties/room types per product. Sets can use different
selection_strategyvalues (e.g., priority order). - Candidate items hold references to property products, property IDs, room types, rate plans, and pricing metadata used by the booking wizard.
- Candidate priorities determine the ordering of fallback selections when multiple accommodations are available.
- Payload schemas live in
@workspace/types(createAccommodationSetSchema,updateAccommodationSetSchema,createAccommodationSetItemSchema).