# Update a booking Partially updates a booking using JSON Patch operations as defined in RFC 6902. This endpoint allows you to perform granular updates on a booking without sending the entire resource. Supported operations include: - add: Add a new field or append to an array - remove: Remove a field or array element - replace: Update an existing field value Read-only Fields (cannot be patched): - /id, /compositeId, /status, /reference, /venueGroupName, /location/*, /productName, /createdDate, /lastUpdate Patchable Fields: - /date - Change booking date (format: YYYY-MM-DD) - /time - Change booking time (format: HH:MM) - /duration - Update duration in minutes - /partySize - Change number of guests - /firstName - Update guest first name - /lastName - Update guest last name - /email - Update guest email - /phone - Update guest phone number - /notes - Update booking notes - /partnerBookingId - Update partner booking reference - /operatorBookingId - Update operator booking ID Preorders - Packages: - /preorders/packages - Add/remove entire packages array - /preorders/packages/- - Add a package to the end of the array - /preorders/packages/{packageId} - Replace/remove a specific package by ID - /preorders/packages/{packageId}/quantity - Update quantity by package ID Note: For packages, only id and quantity can be modified. Other fields (name, description, type, price) are read-only. Package IDs are alphanumeric strings (e.g., "5de64c68ce9583458c447544"). Index-based paths are NOT supported. Preorders - Menus: - /preorders/menus - Add/remove entire menus array - /preorders/menus/- - Add a menu to the end of the array - /preorders/menus/{menuId} - Replace/remove a specific menu by ID - /preorders/menus/{menuId}/quantity - Update menu quantity by ID - /preorders/menus/{menuId}/items - Replace entire items array for a menu - /preorders/menus/{menuId}/items/- - Add an item to a menu - /preorders/menus/{menuId}/items/{itemId} - Replace/remove a menu item by ID - /preorders/menus/{menuId}/items/{itemId}/quantity - Update item quantity by ID Note: For menu items, only id and quantity can be modified. The name field is read-only. Menu and Item IDs are alphanumeric strings (e.g., "5de64c68ce9583458c447544"). Index-based paths are NOT supported. Examples: Update guest information: json [ { "op": "replace", "path": "/email", "value": "newemail@example.com" }, { "op": "replace", "path": "/phone", "value": "+44 20 7946 0958" } ] Update booking date and time: json [ { "op": "replace", "path": "/date", "value": "2025-12-25" }, { "op": "replace", "path": "/time", "value": "19:30" } ] Add a package to preorders: json [ { "op": "add", "path": "/preorders/packages/-", "value": { "id": "5de64c68ce9583458c447544", "quantity": 2 } } ] Update package quantity: json [ { "op": "replace", "path": "/preorders/packages/5de64c68ce9583458c447544/quantity", "value": 5 } ] Remove a package: json [ { "op": "remove", "path": "/preorders/packages/5de64c68ce9583458c447544" } ] Add a menu with items: json [ { "op": "add", "path": "/preorders/menus/-", "value": { "id": "5de64c68ce9583458c447abc", "quantity": 3, "items": [ { "id": "5de64c68ce9583458c447001", "quantity": 1 }, { "id": "5de64c68ce9583458c447002", "quantity": 2 } ] } } ] Add item to existing menu: json [ { "op": "add", "path": "/preorders/menus/5de64c68ce9583458c447abc/items/-", "value": { "id": "5de64c68ce9583458c447003", "quantity": 1 } } ] Update menu item quantity: json [ { "op": "replace", "path": "/preorders/menus/5de64c68ce9583458c447abc/items/5de64c68ce9583458c447001/quantity", "value": 2 } ] Endpoint: PATCH /venues/bookings/{bookingId} Version: 6.0.0 Security: Production, Sandbox ## Path parameters: - `bookingId` (string, required) The unique identifier of the booking. ## Header parameters: - `X-Partner-Reference` (string) Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope. Example: "bottomlessbrunch.com" - `X-Correlation-ID` (string) An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header. Example: "11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA" ## Request fields (application/json-patch+json): - `op` (string, required) The operation to perform Enum: "add", "remove", "replace" - `path` (string, required) JSON Pointer (RFC 6901) to the target location in the document. Must start with / and use / as path separator. Example: "/status" - `value` (any,null) The value to use for the operation. Required for add, replace, and test operations. Can be any valid JSON value (string, number, boolean, object, array, null). Example: "Confirmed" ## Response 200 fields (application/json): - `id` (string) A globally unique identifier for the booking. - `compositeId` (string) A globally unique identifier for the venue/product. - `date` (string) The date of the booking. - `time` (string) The time of the booking. - `partySize` (integer) Number of guests for the booking. - `status` (string) Indicates the current status of the booking: - Pending: The booking request has been received but not yet processed. - InProgress: The enquiry has been received and assigned but is not yet confirmed. - Confirmed: The booking has been confirmed. - Cancelled: The booking was cancelled or rejected. - Deleted: The booking has been deleted from the system. - Lost: The booking was not completed before its scheduled date. Enum: "Pending", "InProgress", "Confirmed", "Cancelled", "Deleted", "Lost" - `firstName` (string) Guest's first name. - `lastName` (string) Guest's last name. - `email` (string) Email address of the guest. - `phone` (string) Phone number of the guest. - `venueGroupName` (string) The name of the venue group that the booked venue belongs to. - `location` (object) - `location.area` (string) The general area where the venue is located Can be more than one separated by |. - `location.city` (string) The city where the venue is located. - `location.lat` (number) The latitude coordinate of the venue. - `location.lng` (number) The longitude coordinate of the venue. - `location.street` (string) The street address of the venue. - `location.postCode` (string) The postal code of the venue. - `location.gPlace` (string) The Google Place ID associated with the venue. - `duration` (integer) Duration of the booking in minutes. - `productName` (string) Name of the product or service reserved. - `notes` (string) Additional notes for the booking. - `createdDate` (string) Timestamp when the booking was created. - `lastUpdate` (string) Timestamp of the last booking update. - `preorders` (object,null) Preordered items for the booking - `preorders.packages` (array,null) List of preordered packages - `preorders.packages.id` (string, required) Package identifier - `preorders.packages.name` (string) Package name Example: "*Pan roasted Padron peppers (V)" - `preorders.packages.description` (string) Package description Example: "5 items per guest: Salmon & celeriac on rye, Buttermilk fries chicken..." - `preorders.packages.type` (string) Package type Example: "food" - `preorders.packages.quantity` (integer, required) Quantity ordered - `preorders.packages.price` (number) Package price Example: 5.57 - `preorders.menus` (array,null) List of preordered menus with items - `preorders.menus.id` (string, required) Menu identifier - `preorders.menus.name` (string) Menu name - `preorders.menus.quantity` (integer, required) Number of menus ordered - `preorders.menus.submitted` (string) Describes the timing of menu item selection relative to the booking workflow. pre indicates items supplied during the booking and therefore included in this menu object. post indicates that no items were provided at booking time, and a link was generated to allow item selection after submission. Enum: "post", "pre" - `preorders.menus.link` (string,null) URL generated to allow menu item selection for this booking menu. Example: "set-menu" - `preorders.menus.price` (number,null) Price per person / fixed price for this menu. Example: 35 - `preorders.menus.items` (array,null) Menu items selected - `preorders.menus.items.id` (string, required) Menu item (package) identifier - `preorders.menus.items.name` (string) Item name - `preorders.menus.items.quantity` (integer, required) Item quantity - `preorders.menus.items.price` (number,null) Price of this menu item. Example: 12.5 - `preorders.menus.items.options` (array,null) Selected configurable option values for this menu item. - `partnerBookingId` (string) A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner’s own reference code for cross-system tracking. - `operatorBookingId` (string) The booking identifier generated by the operator’s TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator’s system and is displayed in the portal instead of the composite ID. - `reference` (string) Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead. ## Response default fields (application/json): - `type` (string) A URI reference [rfc9457] that identifies the problem type. This specification encourages that, when dereferenced, it provides human-readable documentation for the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be "about:blank". - `title` (string, required) A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization. - `status` (integer, required) The HTTP status code [rfc9457, Section 3.1.12] generated by the origin server for this occurrence of the problem. - `detail` (string) A human-readable explanation specific to this occurrence of the problem. - `instance` (string) A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.