Availability
AvailabilityOutcome
| Enum | Description |
|---|---|
TENANT_CONFLICT | The request does not comply with the venue’s global booking rules; therefore, this type of booking is not allowed. |
WORK_DAY_FULL | The requested date is fully booked. |
WORK_DAY_ENDED | All Shifts for the requested date have already ended. |
WORK_DAY_CLOSED | The venue is closed for the entire day. |
SHIFT_NO_AVAILABILITY | The Shift has no availability for the request. |
SHIFT_SHOULD_CONTACT | The customer may contact the venue to request a booking. |
SHIFT_MUST_CONTACT | The customer must contact the venue to request a booking. |
SHIFT_FULL | The Shift is fully booked. |
SHIFT_CONFLICT | The request does not meet the Shift’s specific booking rules. |
SHIFT_CLOSED | The requested Shift is closed, although other Shifts on the same day may still be available. |
SHIFT_NOT_FOUND | The requested Shift is not found, although other Shifts on the same day may still be available. |
BOOKING_SIZE_EXCEEDED | The requested booking size exceeds the limits defined for the Shift. |
BOOKING_CONFLICT | The venue configuration does not allow this booking. |
BOOKING_FORBIDDEN | The venue explicitly rejects the booking request. |
RESOURCE_NOT_AVAILABLE | One or more of the requested resources exist but are not available under the current search context. |
AvailabilityCode
Whenavailability.isAvailable is false, code is the field to branch on. The
detail beside it is a sentence written for a person and localized to the
request language — show it, never parse it.
Codes are listed here under the outcome they arrive
with, because the outcome is what decides the fallbackOptions you are offered.
One code can arrive under more than one outcome.
Codes you will never receive
Five codes are rewritten toNO_AVAILABILITY before the response leaves Restoo,
because saying why would leak something about the venue or another customer:
a banned customer, a duplicate-booking check, and the venue’s internal limits on
children. NO_AVAILABILITY is not a catch-all for unknown failures — it means
there is a reason and it is deliberately not disclosed. Do not look for
something to change.
SHIFT_CONFLICT
The largest group, and the one worth branching on: most of these are the request disagreeing with the shift’s rules, and many are fixed by sending something different.| Code | Meaning | Fix by changing |
|---|---|---|
SHIFT_BOOKING_FLOOR_PLAN_AREA_MUST_BE_DEFINED | The shift offers floor plan areas and none was sent. | floorPlanAreaId |
SHIFT_TIME_SLOT_MINUTE_NOT_VALID | The time sent is not one of the shift’s slots. | The time, to one from timeSlots[] |
SHIFT_BOOKING_SIZE_REQUIRES_EXPERIENCE | A booking this size must include an experience. | Add an experience |
SHIFT_MIN_BOOKING_SIZE_NOT_REACHED | Below the shift’s minimum booking size. | pax / paxChildren |
SHIFT_HIGH_CHAIRS_NOT_ALLOWED | The shift does not accept high chairs. | highChairs |
SHIFT_STROLLERS_NOT_ALLOWED | The shift does not accept strollers. | strollers |
SHIFT_PUBLIC_WAIT_LIST_NOT_ENABLED | The shift has no public wait list. | status — do not offer the wait list |
SHIFT_WAIT_LIST_BOOKINGS_COUNT_EXCEEDED | The shift’s wait list is full. | — |
EXPERIENCE_AUTO_TICKETS_AND_BOOKING_SIZE_NOT_MATCH | The ticket count does not match the booking size. | experience.tickets |
EXPERIENCE_MIN_TICKETS_PER_BOOKING_NOT_REACHED | Below the experience’s minimum tickets. | experience.tickets |
EXPERIENCE_MIN_BOOKING_SIZE_NOT_REACHED | Below the experience’s minimum booking size. | pax / paxChildren |
EXPERIENCE_MAX_BOOKING_SIZE_EXCEEDED | Above the experience’s maximum booking size. | pax / paxChildren |
EXPERIENCE_BOOKING_FLOOR_PLAN_AREA_NOT_ALLOWED | The experience requires a different area. | floorPlanAreaId |
EXPERIENCE_PUBLIC_BOOKINGS_NOT_ALLOWED | The experience is not open to online booking. | Another experience |
FLOOR_PLAN_AREA_EXPERIENCE_NOT_ALLOWED | That area does not take bookings with an experience. | floorPlanAreaId |
FLOOR_PLAN_AREA_PUBLIC_BOOKINGS_NOT_ALLOWED | That area is not open to online booking. | floorPlanAreaId |
TIME_SLOT_NOT_AVAILABLE_FOR_EXPERIENCE | The slot does not run that experience. | The slot, or the experience |
TIME_SLOT_MIN_BOOKING_SIZE_NOT_REACHED | Below the slot’s minimum booking size. | pax / paxChildren |
TIME_SLOT_MAX_BOOKING_SIZE_EXCEEDED | Above the slot’s maximum booking size. | pax / paxChildren |
TIME_SLOT_BOOKINGS_NOT_ALLOWED | The slot takes no bookings. | Another slot |
TIME_SLOT_START_MIN_NOTICE_TIME_EXCEEDED | Too close to the slot’s start time. | A later slot |
ADD_ON_MIN_BOOKING_SIZE_NOT_REACHED | The booking is too small for that add-on. | pax / paxChildren, or drop the add-on |
ADD_ON_MAX_BOOKING_SIZE_EXCEEDED | The booking is too large for that add-on. | pax / paxChildren, or drop the add-on |
ADD_ON_MIN_UNITS_NOT_REACHED | Below that add-on’s minimum quantity. | addOns[].quantity |
ADD_ON_MAX_UNITS_EXCEEDED | Above that add-on’s maximum quantity. | addOns[].quantity |
ADD_ON_GROUP_MIN_UNITS_NOT_REACHED | Below the group’s minimum total units. | addOns |
ADD_ON_GROUP_MAX_UNITS_EXCEEDED | Above the group’s maximum total units. | addOns |
ADD_ON_GROUP_MIN_UNITS_PER_PAX_NOT_REACHED | Below the group’s minimum units per guest. | addOns |
ADD_ON_GROUP_MAX_UNITS_PER_PAX_EXCEEDED | Above the group’s maximum units per guest. | addOns |
ADD_ON_GROUP_MAX_DISTINCT_TYPES_EXCEEDED | Too many different add-ons from the group. | addOns |
ADD_ON_GROUP_MAX_DISTINCT_TYPES_PER_PAX_EXCEEDED | Too many different add-ons per guest. | addOns |
ADD_ON_GROUP_REQUIRES_UNIQUE_ADD_ON_PER_BOOKING | Only one add-on from that group per booking. | addOns |
ADD_ON_GROUP_BOOKING_SIZE_AND_ADD_ON_UNITS_NOT_MATCH | Total units must equal the booking size. | addOns |
ADD_ON_GROUP_NO_AVAILABLE_ADD_ONS | Nothing in the group is available. | — |
SHIFT_BOOKING_CHILDREN_TOTAL_EXCEEDED | Internal — you receive NO_AVAILABILITY. | — |
SHIFT_BOOKING_CHILDREN_PERCENT_EXCEEDED | Internal — you receive NO_AVAILABILITY. | — |
SHIFT_MAX_CHILDREN_COUNT_EXCEEDED | Internal — you receive NO_AVAILABILITY. | — |
TABLE_BOOKINGS_NOT_ALLOWED | That table does not take bookings. | tables |
TABLE_BOOKINGS_NOT_ALLOWED_ON_TIME_SLOT | That table does not take bookings at that time. | tables, or the time |
TABLE_BOOKING_SIZE_OUT_OF_RANGE | The booking size does not fit that table. | tables, or the booking size |
TABLE_COMBINATION_BOOKINGS_NOT_ALLOWED_ON_TIME_SLOT | That combination of tables does not take bookings at that time. | tables, or the time |
TABLE_COMBINATION_BOOKING_SIZE_OUT_OF_RANGE | The booking size does not fit that combination of tables. | tables, or the booking size |
TABLE_IS_OVERBOOKED | That table already has an overlapping booking. | tables |
SHIFT_FULL and SHIFT_SHOULD_CONTACT
Capacity has run out. These arrive asSHIFT_SHOULD_CONTACT when the shift
still takes bookings by phone, and as SHIFT_FULL when it does not — the same
code, two outcomes, decided by the venue’s configuration.
| Code | Meaning |
|---|---|
SHIFT_STATUS_FULL | The shift is marked full. |
SHIFT_STATUS_CONTACT | The shift only takes bookings by phone. |
SHIFT_MAX_PAX_EXCEEDED | No room left for that many guests in the shift. |
SHIFT_TIME_SLOTS_NOT_AVAILABLE | No slot in the shift has availability. |
SHIFT_TICKETS_NOT_AVAILABLE | The experience has no tickets left. |
SHIFT_AVAILABLE_TICKETS_EXCEEDED | Fewer tickets left than requested. |
SHIFT_AVAILABLE_TICKETS_EXCEEDED_FOR_EXPERIENCE_AUTO_TICKETS | Fewer left than the automatic ticket count needs. |
SHIFT_AVAILABLE_TICKETS_EXCEEDED_FOR_EXPERIENCE_MIN_TICKETS_PER_BOOKING | Fewer left than the experience’s minimum per booking. |
FLOOR_PLAN_AREA_MAX_PAX_EXCEEDED | No room left for that many guests in the area. |
TIME_SLOT_MAX_PAX_EXCEEDED | No room left for that many guests in the slot. |
TIME_SLOT_PAX_CAPACITY_EXCEEDED | The shift’s capacity for that slot is used up. |
TIME_SLOT_FLOOR_PLAN_AREA_MAX_CAPACITY_EXCEEDED | The area’s capacity for that slot is used up. |
TIME_SLOT_MAX_BOOKINGS_EXCEEDED | The slot already has as many bookings as it takes. |
TIME_SLOT_HIGH_CHAIRS_CAPACITY_EXCEEDED | No high chairs left for that slot. |
TIME_SLOT_STROLLERS_CAPACITY_EXCEEDED | No stroller space left for that slot. |
TABLE_NOT_FOUND | No table can be assigned. |
The remaining outcomes
| Outcome | Code | Meaning |
|---|---|---|
TENANT_CONFLICT | TENANT_MAX_BOOKING_SIZE_EXCEEDED | Above the venue’s maximum booking size. |
TENANT_CONFLICT | TENANT_BOOKING_MAX_NOTICE_DATE_EXCEEDED | Further ahead than the venue books. |
WORK_DAY_CLOSED | WORK_DAY_HAS_NO_SHIFTS | The work day has no shifts. |
WORK_DAY_CLOSED | WORK_DAY_SHIFTS_STATUS_CLOSED | Every shift that day is closed. |
WORK_DAY_CLOSED | WORK_DAY_SPECIAL_CLOSED | Closed by a special day. |
WORK_DAY_ENDED | WORK_DAY_SHIFTS_ENDED | Every shift that day has finished. |
WORK_DAY_ENDED | DATE_IS_PAST | The date is in the past. |
WORK_DAY_FULL | WORK_DAY_SHIFTS_STATUS_FULL | Every shift that day is full. |
SHIFT_CLOSED | SHIFT_STATUS_CLOSED | That shift is closed. |
SHIFT_NOT_FOUND | WORK_DAY_SHIFT_NOT_FOUND | No shift covers the time sent. |
SHIFT_NOT_FOUND | SHIFT_ENDED | That shift has already finished. |
SHIFT_NO_AVAILABILITY | SHIFT_REQUIRES_EXPERIENCE_NO_EXPERIENCE_AVAILABLE | The shift needs an experience and none is available. |
SHIFT_MUST_CONTACT | SHIFT_BOOKING_START_MIN_NOTICE_TIME_EXCEEDED | Too close to the booking time. |
SHIFT_MUST_CONTACT | SHIFT_FIRST_BOOKING_AT_MIN_NOTICE_TIME_EXCEEDED | Too close to the shift’s first booking time. |
SHIFT_MUST_CONTACT | EXPERIENCE_MIN_NOTICE_TIME_EXCEEDED | Too close for that experience. |
SHIFT_MUST_CONTACT | ADD_ON_MIN_NOTICE_TIME_EXCEEDED | Too close for that add-on. |
BOOKING_SIZE_EXCEEDED | SHIFT_MAX_BOOKING_SIZE_EXCEEDED | Above the shift’s maximum booking size. |
BOOKING_SIZE_EXCEEDED | SHIFT_LARGE_BOOKINGS_NOT_ALLOWED | The shift takes no group bookings. |
BOOKING_SIZE_EXCEEDED | SHIFT_LARGE_BOOKINGS_MUST_CONTACT_TO_BOOK | Group bookings go through the venue. |
BOOKING_SIZE_EXCEEDED | SHIFT_LARGE_BOOKING_START_MIN_NOTICE_TIME_EXCEEDED | Too close for a group booking. |
RESOURCE_NOT_AVAILABLE | SHIFT_EXPERIENCE_NOT_AVAILABLE | That experience is not available for the shift. |
RESOURCE_NOT_AVAILABLE | SHIFT_EXPERIENCE_NOT_ACTIVE | That experience is not active for the shift. |
RESOURCE_NOT_AVAILABLE | WORK_DAY_EXPERIENCE_NOT_AVAILABLE | No shift that day runs the experience. |
RESOURCE_NOT_AVAILABLE | SHIFT_EXPERIENCE_FLOOR_PLAN_AREA_NOT_AVAILABLE | The shift lacks the area the experience needs. |
RESOURCE_NOT_AVAILABLE | SHIFT_FLOOR_PLAN_AREA_NOT_AVAILABLE | That area is not available for the shift. |
RESOURCE_NOT_AVAILABLE | SHIFT_TABLE_NOT_AVAILABLE | That table is not available for the shift. |
BOOKING_CONFLICT | DATE_TIME_IS_PAST | The date and time are in the past. |
BOOKING_CONFLICT | TIME_INTERVAL_NOT_VALID | The time is not on a valid interval. |
BOOKING_CONFLICT | SHIFT_PHONE_OVERLAPPED | That phone already has an overlapping booking. |
BOOKING_CONFLICT | EXCLUDE_BOOKING_STATUS_CONFLICT | The excludeBookingUuid booking is in a status that cannot be excluded. |
BOOKING_CONFLICT | UPDATE_NOT_ALLOWED_BOOKING_IS_PENALIZABLE | The booking is inside its penalty window. |
BOOKING_CONFLICT | UPDATE_NOT_ALLOWED_BOOKING_WITH_CANCELLATION_POLICY | Its cancellation policy blocks the change. |
BOOKING_CONFLICT | UPDATE_NOT_ALLOWED_BOOKING_WITH_PRODUCT | It has a product attached. |
BOOKING_FORBIDDEN | CUSTOMER_IS_BANNED | Internal — you receive NO_AVAILABILITY. |
BOOKING_FORBIDDEN | SHIFT_IP_OVERLAPPED | Internal — you receive NO_AVAILABILITY. |
AvailabilityFallbackOption
Indicates the action suggested to the customer when the request has no availability.| Enum | Description |
|---|---|
CONTACT | Suggests that the customer should contact the venue directly. |
REQUEST_BOOKING | Offers the option to submit a booking request (must be confirmed manually by the venue). |
JOIN_WAIT_LIST | Offers the option to join the wait list. |
SEARCH_ALTERNATIVE_DATES | Suggests searching availability for other dates. |
SEARCH_ALTERNATIVE_TENANTS | Suggests searching availability in sibling venues belonging to the same group. |
UPDATE_SEARCH | Suggests modifying the current search parameters (e.g., PAX, experience, shift). |
ChildrenSeatingAvailabilityType
| Enum | Description |
|---|---|
LIMITED | Available but limited in quantity. |
UNLIMITED | Available without a maximum limit. |
FORBIDDEN | Not allowed for this Shift. |
Booking
BookingCancelReason
| Enum | Description |
|---|---|
CALL_TO_CANCEL | The customer has called the venue to cancel their reservation. |
UPDATE_BOOKING | The customer wants to modify the booking. |
UNEXPECTED_SITUATION | The customer had an unexpected situation. |
BOOKED_ANOTHER_PLACE | The customer decided to book another venue. |
CHANGED_PLANS | The customer changed plans. |
OTHER | Other reason. |
REVOKE_LEGAL_CONSENT | Withdraw legal consent. |
BookingChannel
| Enum | Description |
|---|---|
WIDGET | Restoo booking widget. |
OFFLINE | Restoo back office. |
API | Restoo API. |
BookingSpecialOccasion
| Enum | Description |
|---|---|
WEDDING | Wedding anniversary. |
BIRTHDAY | Birthday. |
ROMANTIC | Romantic date. |
FRIENDS | Friends gathering. |
FAMILY | Family gathering. |
BUSINESS | Business meeting. |
OTHER | Other. |
BookingStatus
| Enum | Description |
|---|---|
REQUESTED | The customer has submitted a booking request, but it is not yet being processed by the venue. |
PENDING_MERCHANT_CONFIRMATION | The customer has submitted a booking request, but it has not yet been confirmed by the venue. |
PENDING_WAIT_LIST_BOOKING | The customer is on a booking wait list. The reservation may be confirmed if another customer cancels theirs. |
CONFIRMED | The booking is confirmed by the venue and the customer. |
ARRIVED | The customer has arrived for their booking but is not yet seated. |
WAIT_LIST_WALK_IN | The customer does not have a reservation and is waiting for an available spot. |
SEATED | The customer is seated at their table. |
DESSERTS | The customer has ordered desserts. |
ACCOUNT_SENT | The bill has been sent but has not yet been paid. |
ACCOUNT_PAID | The bill has been paid, but the customer is still at the table. |
ATTENDED | The customer attended their booking, and it has concluded (the table has been freed). |
CANCELED | The booking was canceled before the scheduled time. |
NO_SHOW | The customer did not show up for their booking. |
DECLINED_BY_MERCHANT | The venue declined the customer’s booking request. |
DELETED | The booking was deleted by the venue. |
CancellationPolicy
CancellationPolicyAmountType
| Enum | Description |
|---|---|
PER_PAX | The amount is agreed per diner in the booking. |
PER_BOOKING | The amount is agreed per booking, regardless of the number of diners. |
CancellationPolicyConditionsLine
| Enum | Description |
|---|---|
PAX | Line quantity defined per PAX in the booking. |
BOOKING | Line quantity defined per booking. |
EXPERIENCE | Line quantity defined per experience. |
ADD_ON | Line quantity defined per add-on. |
CancellationPolicyStatus
| Enum | Description |
|---|---|
PENDING_SIGNATURE | Signature pending from the customer. |
SIGNATURE_EXPIRED | The customer did not sign within the allowed timeframe; the booking was automatically canceled. |
ACTIVE | Signature completed and accepted by the customer. |
COMPLETED | Booking completed without violating the cancellation policy. |
REVOKED | The cancellation policy was revoked. |
PENALTY_PARTIAL | Penalty applied for a partial cancellation within the penalty window. |
PENALTY_CANCEL | Penalty applied for a full cancellation within the penalty window. |
PENALTY_NO_SHOW | Penalty applied for a no-show. |
CancellationPolicyType
| Enum | Description |
|---|---|
NONE | The booking has no Cancellation Policy. |
GUARANTEE_AUTHORIZATION | The customer must provide their credit card as a guarantee for the booking. |
PREPAYMENT | The customer must pay an advance to confirm their booking. |
Customer
CustomerLanguage
| Enum (ISO 639 format) | Description |
|---|---|
ca | Catalan |
de | German |
en | English |
es | Spanish |
eu | Basque |
fr | French |
it | Italian |
pt | Portuguese |
Shared
Country
| Enum (ISO 3166 format) | Description |
|---|---|
ES | Spain |
IT | Italy |
US | USA |
| … | … |
Currency
| Enum (ISO 4217 format) | Description |
|---|---|
EUR | Euro |
USD | United States dollar |
GBP | Great Britain pound |
MXN | Mexican peso |
DOP | Dominican peso |
ImageType
| Enum | Description |
|---|---|
THUMBNAIL | Thumbnail image type. |
DETAIL | Detail image type. |
Shift
ShiftAvailabilityStatus
| Enum | Description |
|---|---|
OPEN | The Shift accepts bookings. |
CONTACT | The Shift accepts bookings, but the customer must contact the venue to arrange it manually. |
FULL | The Shift capacity is full, and no more bookings are accepted. |
CLOSED | The Shift does not accept bookings. |
ShiftType
| Enum | Description |
|---|---|
LUNCH | Lunch |
LUNCH_LATAM | Lunch (LATAM localized) |
DINNER | Dinner |
SNACK | Snack |
BREAKFAST | Breakfast |
BRUNCH | Brunch |
SUNBED | Sunbed |
BALINESE_BED | Balinese Bed |
COCKTAILS | Cocktails |
AFTER_HOUR | After Hour |
HAPPY_HOUR | Happy Hour |
EVENT | Event |
VERMOUTH | Vermouth |
TARDEO | Tardeo |
APERITIF | Aperitif |
TASTING | Tasting |