API reference · v1
A versioned, scoped API.
Resource routes for the current booking domain. Every mutation passes through the same policy and transaction layer as the website.
This reference lists implemented source routes. The broader 96-operation strategy includes future CMS/access facade, payment, erasure and feedback features that are not exposed here.
Authentication and errors
Send the scoped token in the Authorization header. Errors return a bounded code and request ID. 401 means missing/invalid credentials; 403 means insufficient scope or current permission; 404 also protects another user's resource. 409 indicates a business conflict, 412 a stale version, 428 a missing precondition and 429 a rate limit.
Explore operations
39 operations
GET/runtime
getRuntime
GET/availability
getAvailability
GET/calendar
getCalendar
GET/reservations
listReservations
POST/reservations
createReservation
{
"type": "object",
"additionalProperties": false,
"properties": {
"quoteId": {
"type": "string",
"maxLength": 100
},
"note": {
"type": "string",
"maxLength": 1000
},
"contact": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"phone"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"phone": {
"type": "string",
"maxLength": 32
}
}
}
},
"required": [
"quoteId"
]
}GET/reservations/{id}
getReservation
DELETE/reservations/{id}
cancelReservation
{
"type": "object",
"additionalProperties": false,
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"reason"
]
}GET/units
list_units
GET/units/{id}
get_units
PATCH/units/{id}
updateUnit
{
"type": "object",
"additionalProperties": false,
"properties": {
"capacity": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"rate": {
"type": [
"integer",
"null"
],
"minimum": 10000,
"maximum": 100000000
},
"active": {
"type": "boolean"
},
"name": {
"type": "string",
"maxLength": 120
},
"verified": {
"type": "boolean"
}
},
"required": [
"capacity",
"rate",
"active"
]
}GET/content/published
getPublishedContent
GET/reservations/{id}/communications
listCommunications
GET/me/profile
getMyProfile
POST/me/profile
createMyProfile
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"phone"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"phone": {
"type": "string",
"maxLength": 32
}
}
}PATCH/me/profile
updateMyProfile
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"phone"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"phone": {
"type": "string",
"maxLength": 32
}
}
}GET/reservations/{id}/contact
getReservationContact
GET/settings
getSettings
PATCH/settings
updateSettings
{
"type": "object",
"additionalProperties": false,
"properties": {
"capacity": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"approvalHours": {
"type": "integer",
"minimum": 1,
"maximum": 72
},
"cancelHours": {
"type": "integer",
"minimum": 0,
"maximum": 336
},
"friendAt": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"familyAt": {
"type": "integer",
"minimum": 2,
"maximum": 200
},
"friendDiscount": {
"type": "integer",
"minimum": 0,
"maximum": 50
},
"familyDiscount": {
"type": "integer",
"minimum": 0,
"maximum": 50
},
"paused": {
"type": "boolean"
},
"products": {
"type": "object",
"additionalProperties": false,
"properties": {
"dayAdultRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"dayChildRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"individualRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"roomRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"extraChildRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"siteAdults": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"nightAdults": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"dayStart": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"dayEnd": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"stayStart": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"stayEnd": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"eventDayRate": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
}
}
}
},
"required": [
"capacity",
"approvalHours",
"cancelHours",
"friendAt",
"familyAt",
"friendDiscount",
"familyDiscount",
"paused"
]
}GET/blocks
listBlocks
POST/blocks
createBlock
{
"type": "object",
"additionalProperties": false,
"properties": {
"arrival": {
"type": "string",
"format": "date"
},
"departure": {
"type": "string",
"format": "date"
},
"unitId": {
"type": "string",
"maxLength": 100
},
"reason": {
"type": "string",
"maxLength": 120
}
},
"required": [
"arrival",
"departure",
"unitId",
"reason"
]
}GET/promotions
listPromotions
POST/promotions
createPromotion
{
"type": "object",
"additionalProperties": false,
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Za-z0-9]{4,24}$"
},
"kind": {
"type": "string",
"enum": [
"percent",
"fixed"
]
},
"value": {
"type": "integer",
"minimum": 1
},
"maxUses": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"from": {
"type": "string",
"format": "date"
},
"until": {
"type": "string",
"format": "date"
},
"active": {
"type": "boolean"
}
},
"required": [
"code"
]
}POST/quotes
createQuote
{
"type": "object",
"additionalProperties": false,
"properties": {
"arrival": {
"type": "string",
"format": "date"
},
"departure": {
"type": "string",
"format": "date"
},
"guests": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"units": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"minItems": 0,
"maxItems": 9,
"uniqueItems": true
},
"promo": {
"type": "string",
"maxLength": 32
},
"guestId": {
"type": "string",
"maxLength": 128
},
"kind": {
"type": "string",
"enum": [
"day",
"individual",
"private",
"event"
]
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"childrenAges": {
"type": "array",
"maxItems": 100,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 9
}
}
},
"required": [
"arrival",
"departure",
"units"
]
}POST/reservations/{id}/actions/approve
approveReservation
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/actions/decline
declineReservation
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/actions/checkin
checkInReservation
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/actions/complete
completeReservation
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/actions/no-show
noShowReservation
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/actions/assign-rooms
assignRooms
{
"type": "object",
"additionalProperties": false,
"properties": {
"units": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"minItems": 1,
"maxItems": 9,
"uniqueItems": true
}
},
"required": []
}POST/reservations/{id}/actions/offer-event
offerEvent
{
"type": "object",
"additionalProperties": false,
"properties": {
"amount": {
"type": "integer",
"minimum": 10000,
"maximum": 100000000
},
"holdHours": {
"type": "integer",
"minimum": 1,
"maximum": 72
}
},
"required": []
}POST/reservations/{id}/actions/accept-event
acceptEvent
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/change-quotes
createChangeQuote
{
"type": "object",
"additionalProperties": false,
"properties": {
"arrival": {
"type": "string",
"format": "date"
},
"departure": {
"type": "string",
"format": "date"
},
"guests": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"promo": {
"type": "string",
"maxLength": 32
},
"kind": {
"type": "string",
"enum": [
"day",
"individual",
"private",
"event"
]
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"childrenAges": {
"type": "array",
"maxItems": 100,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 9
}
}
},
"required": [
"arrival",
"departure"
]
}POST/reservations/{id}/changes
requestChange
{
"type": "object",
"additionalProperties": false,
"properties": {
"quoteId": {
"type": "string",
"maxLength": 100
}
},
"required": [
"quoteId"
]
}POST/reservations/{id}/changes/actions/approve
approveChange
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/changes/actions/decline
declineChange
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}POST/reservations/{id}/notes
addNote
{
"type": "object",
"additionalProperties": false,
"properties": {
"note": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"note"
]
}POST/units/{id}/actions/readiness
updateReadiness
{
"type": "object",
"additionalProperties": false,
"required": [
"ready"
],
"properties": {
"ready": {
"type": "boolean"
}
}
}PATCH/promotions/{id}
updatePromotion
{
"type": "object",
"additionalProperties": false,
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Za-z0-9]{4,24}$"
},
"kind": {
"type": "string",
"enum": [
"percent",
"fixed"
]
},
"value": {
"type": "integer",
"minimum": 1
},
"maxUses": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"from": {
"type": "string",
"format": "date"
},
"until": {
"type": "string",
"format": "date"
},
"active": {
"type": "boolean"
}
},
"required": [
"code"
]
}DELETE/blocks/{id}
releaseBlock
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}CRUD follows the resource lifecycle
Cancel reservations, reverse recorded payments when that feature ships, retire inventory and revoke grants. There is no raw database-delete API for booking history, issued documents or audit. New room creation/retirement, contact/note editing, external CMS/access management and financial/feedback features remain planned shared-domain work.