Skip to content

Introduction

This API allows an PMS ("Property Manager System") to integrate with the WebBookingPro channel manager by implementing an API receiver in their environment for bookings and API push from their side for ARI.

Getting Started

Becoming A Partner

To be considered as a partner, please complete our partnership form. Your application will be placed in a queue to be reviewed for fit andcompatibility. We will reach out if the partnership is approved.

Upon completion of the API Credentialing, you will then have access to your Test Account login information, you will receive channel ID (cid), and the shared_secret that is required for the API calls.

We request that you update our team at least once every two weeks while in development with your estimated completion date.

Partners that fail to provide an estimated completion date may have their participation eligibility rescinded.

Once you have finished your development process, you will be guided on certification integration process.

Once you get certified, our team will inform you of the next steps, including providing us with:

  • Logos
  • Information about your service
  • Contact Information to various departments of your business (support, marketing, etc.)

Flow

If the Property is not existing already on WebBookingPro, you will have ability to Create Property using our API and automatically receive all required information needed for mapping.

Any existing WebBookingPro property use can add integration with your System through "Integrations" menu. The property owner then maps the rooms and rate plans in your System to complete the connection.

After a property has been setup, you should push full refresh to WebBookingPro channel maanger. This means PMS should send all availability, rates and restrictions for the next 1+ years (usually until the end of next year) for all rooms and rate plans. After this initial sync has been completed PMS should update the WebBookingPro whenever there is a change to ARI, eg. because a booking has been imported, room types of booking has been changed, price has been altered.

PMS should poll for bookings as backup in regular configurable intervals (e.g. 30 minutes). Bookings can and should be sent via a callback to your PMS to speed up the import.

In this case you have to provide us your endpoint for receiving push of reservations.

Booking Format

The full booking format is documented here. Please take note of which fields are required and which fields are optional.

Error Codes

You can respond with error IDs listed in our error code list. Please use the numeric codes in the ID column. Only errors whose code starts with FAULT.OTA. are supported.

Rate Plans

On the WebBookingPro channel manager rooms and rate plans have a many-to-many relationship. This means that a room can have one or more rate plans, and each rate plan can be used in one or more rooms. For the ARIUpdate calls we can send different wbp_rate_id values for the same wbp_room_id. Rates and restrictions are tied to rate plans, while availability is usually (99%) tied to rooms, so the units will be constant across different rate plans for the same dates and for the same room, but rates and restrictions can vary. To close off a rate plan we are using the close flag.

Also there is a possibility that rate plan has it's own separater availability. In this case you can send availabilty even on rate plan level.

Each Rate Plan on WebBookingPro can have either separate or inherited pricing, seprate on inherited inventory availability, seprate or inherited restrictions (close, minimum stay, maximum stay).

FAQ

Terminology

  • OTA: Online travel agency (ex: booking.com, or competitor)
  • PMS: Property Management System (your system you are integration with WebBookingPro)
  • cid: Channel ID - a two to four character code used by WebBookingPro uniquely identify an PMS. WebBookingPro will define this upon approving request.
  • guid: Globally unique identifier, a unique 36 character code which identifies a request. Useful for seeing if a request is a retry and for debugging.

Requests

PMS should send requests to the WebBookingPro with content-type application/json, with the payload being in the body of the request. Gzip compression and keep-alives will be used if supported. HTTPS (SSL encryption) is required for any endpoint (WebBookingPro or yours).

HTTP response codes from WebBookingPro should always be 200. They have the content-type application/json.

Required API calls

As a minimum these API calls need to be implemented on the OTA side:

  • HealthCheck
  • SetupProperty
  • GetRoomTypes
  • GetRatePlans
  • ARIUpdate
  • GetBookingList
  • GetBookingId
Download OpenAPI description
Languages
Servers
Mock server

https://webbookingpro.redocly.app/_mock/wbpapi/

WebBookingPro endpoint

https://secure.webbookingpro.com/api/cloudpms/

Request

Called prior to SetupProperty or other configuration requests to verify proper operation. Should always return true.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idstringrequired
One of:

Property ID on the Your PMS if already set

>= 1
string>= 1
wbp_property_idintegerrequired

Property ID on the WebBookinPro if already set, empty string otherwise

wbp_property_passwordstringrequired

Password for property on WebBookingPro if already set, empty string otherwise.

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"HealthCheck"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/HealthCheck?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "HealthCheck",
    "wbp_property_id": "",
    "wbp_property_password": "",
    "pms_property_id": "",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3"
  }'

Responses

HealthCheck

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": true }

Request

Check/verify/validate the credentials stored in wbp_property_id and wbp_property_password. If the credentials are invalid return with error ID 1001. If the connection needs to be enabled from the WBP side first return with error ID 1002.

You can prepare UI for integration with WebBookingPro where user will be prompted to put in the credentials (wbp_property_id and wbp_property_password), which are provided by WebBookingPro. Both wbp_property_id and wbp_property_password should be retained by PMS and passed in every call.

It is up to your system if you will be handling connection and setup of password manually, visible to user or not, or using CreateProperty operationId.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idstringrequired

Property ID on your PMS

wbp_property_idintegerrequired

Property ID on the WebBookingPro

wbp_property_passwordstring

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"SetupProperty"
RoomInfoArray of objects(room_info)

This list should contain of rooms enabled for the the Channel Manager. By default this is not present. It's only necessary for deep integrations or situations where the WebBookingPro plans to automatically/create destroy rooms using the PMS configuration. In a normal integration this isn't very usual.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/SetupProperty?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "SetupProperty",
    "wbp_property_id": "",
    "wbp_property_password": "",
    "pms_property_id": "14524",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3"
  }'

Responses

SetupProperty

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": true }

Request

Returns a list of rooms configured for the passed credentials.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"GetRoomTypes"
RoomInfoArray of objects(room_info)

This list of rooms will only be returned if enabled for the WebBookingPro by your PMS. By default this is not present. It's only necessary for deep integrations or situations where the PMS plans to automatically/create destroy rooms using PMS configuration. In a normal integration this isn't very usual.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/GetRoomTypes?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "GetRoomTypes",
    "wbp_property_id": 1111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3"
  }'

Responses

GetRoomTypes

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
RoomsArray of objectsrequired

List of rooms on the WebBookingPro.

Rooms[].​wbp_room_idintegerrequired

Room ID on the WebBookingPro

Rooms[].​labelstring

Name, label or short summary of the room type

Rooms[].​maxPersonsinteger>= 1

Number of people that can stay in this room.

Rooms[].​dormboolean

If true the room is a dormitory/shared room.

Response
application/json
{ "success": true, "Rooms": [ { … }, { … } ] }

Request

PMS should use this call to retrieve a list of rate plans, which are either specific to each room, or global for all rooms.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"GetRatePlans"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/GetRatePlans?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "GetRatePlans",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3"
  }'

Responses

GetRatePlans

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
RatePlansArray of objectsrequired

List of rate plans on the OTA.

RatePlans[].​wbp_room_idstringrequired

Room ID on the OTA tied to the rate plan. If the rate plan is available to all rooms set this to 0.

RatePlans[].​wbp_rate_idstringrequired

Rate plan ID on the OTA. Cannot be 0, empty string or otherwise falsy.

RatePlans[].​titlestringrequired

Name, label or short summary of the rate plan

Response
application/json
{ "success": true, "RatePlans": [ { … }, { … } ] }

Request

This call is used to send availability, rates and restrictions to your OTA. We will combine the updates into as few date ranges as possible, and we split bigger updates into several API requests. We also cache data and will not send ARI updates if the ARI data has not changed within a certain timeframe. You can ask us to alter the number of Inventory objects we send per request. It's also possible to ask us to restrict maximum number of days per date range.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"ARIUpdate"
currencystring^[A-Z]{3}$required

3-letter ISO 4217 currency code. This is the currency the property has set for the channel connection, and may differ from the property's native currency. The OTA can use this field to assert that rates are sent in the correct currency.

InventoryArray of objectsrequired
Inventory[].​wbp_room_idstringrequired

Room ID on the OTA.

Inventory[].​wbp_rate_idstringrequired

Rate plan ID on the OTA

Inventory[].​start_datestring(date)required

Start date for when the sent ARI is applicable.

Inventory[].​end_datestring(date)required

End date for when the sent ARI is applicable. Note that this date is inclusive. For example, if the end_date is 2028-08-29 and we send rate = 20.15, then this rate is applicable for someone staying/arriving on 2028-08-29.

Inventory[].​unitsinteger>= 0

Number of rooms bookable (available) for private rooms, or for the number of beds for shared/dorm rooms.

Inventory[].​ratestring^\d+(\.\d+)?$

Price per unit for a single night.

Inventory[].​rdef_singlestring^\d+(\.\d+)?$

The single use rate, if only one person is staying. This will only be present for private rooms, and only if the occupancy of this room is higher than 1. If the value is 0 we recommend to not make the single use rate available, or to just use the same price as for rate.

Inventory[].​num_adults_includedinteger>= 0

Number of adults included in base rate. Sent for OBP enabled channels.

Inventory[].​num_children_includedinteger>= 0

Number of children included in base rate. Sent for OBP enabled channels.

Inventory[].​max_losinteger>= 0

Maximum length of stay. A guest should not be able to book if they selected more nights than this value. A value of 0 means that there is no restriction.

There are two ways to restrict bookings by this value: a) Check the max_los value for the arrival date, or b) check the max_los value for all days the guest is intending to stay and restrict by the lowest value.

Inventory[].​min_losinteger>= 1

Minimum length of stay. A guest should not be able to book if they selected fewer nights than this value.

There are two ways to restrict bookings by this value: a) Check the min_los value for the arrival date, or b) check the min_los value for all days the guest is intending to stay and restrict by the lowest value.

Inventory[].​closearrboolean

Restricts whether a guest can arrive within the specified date range. If true the guest can stay and depart within the date range, but not arrive.

Inventory[].​closedepboolean

Restricts whether a guest can depart within the specified date range. If true the guest can stay and arrive within the date range, but not depart.

Inventory[].​closeboolean

Restricts whether a guest can stay within the specified date range. If true the guest cannot arrive, stay or depart within the date range. In many cases this is equivalent to units = 0, however it is also used to make specific rate plans unavailable while leaving others bookable.

Inventory[].​min_advanced_offsetinteger>= 0

Cut off restriction: Specifies the number of days before the arrival date guests are allowed to book. The value of 0 resets to no restriction, which is the default. This restriction is mainly used for properties that want to have a lot of advanced bookings by offering a heavily discounted rate if guests book at least X number of days in advance.

Inventory[].​max_advanced_offsetinteger>= 0

Last Minute restriction: The number of days before the arrival date guests can book. The value of 0 resets to no restriction, which is the default. This restriction is mainly used to boost last-minute reservations.

Inventory[].​^adult_\d+$string^\d+(\.\d+)?$pattern property

Extra price for the Nth adult (e.g., adult_3, adult_4). Sent for OBP enabled channels.

Inventory[].​^child_\d+$string^\d+(\.\d+)?$pattern property

Extra price for the Nth child (e.g., child_3, child_4). Sent for OBP enabled channels.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/ARIUpdate?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "ARIUpdate",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "currency": "USD",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3",
    "Inventory": [
      {
        "wbp_room_id": "61365",
        "wbp_rate_id": "rate_456",
        "start_date": "2025-01-22",
        "end_date": "2025-02-12",
        "units": 5,
        "rate": "15.00",
        "rdef_single": "12.00",
        "max_los": 14,
        "min_los": 2,
        "closearr": false,
        "closedep": false,
        "close": false,
        "min_advanced_offset": 2,
        "max_advanced_offset": 30,
        "num_adults_included": 2,
        "num_children_included": 2,
        "adult_3": "8.00",
        "child_3": "5.00"
      },
      {
        "wbp_room_id": "61365",
        "wbp_rate_id": "rate_888",
        "start_date": "2025-01-22",
        "end_date": "2025-02-12",
        "units": 5,
        "rate": "30.00",
        "close": true
      }
    ]
  }'

Responses

ARIUpdate

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": true }

Request

Returns a list of bookings/reservations which have not been previously downloaded or have been modified.

The pull interval can be freely set. For channels that do not support the CreateBooking callback the interval is usually set to pull bookings every 5 minutes. If CreateBooking is supported then the GetBookingList will be used as a fallback every 30 minutes.

The WebBookingPro can also send to your PMS a NotifyBooking callback to inform about new bookings available to be polled.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"GetBookingList"
wbp_booking_versionstring or nullrequired

With each request we send along wbp_booking_version, which has the format YYYY-MM-DD HH:MM:SS and indicates the time in UTC we last successfully requested bookings. It can be null if no successful response has been received so far. Please use wbp_booking_version to only return to us new or modified bookings made since then. To ensure that no booking are skipped due to a time-offset between your and our servers make sure to always reduce 5 or more minutes from the time given. Example: we provide 2017-06-22 12:09:19, then please return all new/modified/cancelled bookings since 2017-06-22 12:04:19 (5 minutes before the time sent).

If wbp_booking_version is null please return all bookings.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/GetBookingList?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "GetBookingList",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3",
    "wbp_booking_version": "2022-03-22 12:09:19"
  }'

Responses

GetBookingList

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
BookingsArray of objectsrequired

List of bookings to be retrieved with GetBookingId.

Bookings[].​booking_idstringrequired

Unique booking ID on the OTA. Maximum of 64 characters.

Bookings[].​versionstring

Most recent version number of the booking, if the OTA wants to support retrieval of different versions of bookings. Not commonly implemented.

Response
application/json
{ "success": true, "Bookings": [ { … }, { … }, { … } ] }

Request

Returns detailed bookings made on WebBookingPro.

The booking format is described here in full detail.

Most fields are optional. This specification lists only the minimum required fields to be eligible for a successful Build-To-Us integration.

Prices: Send us sell rates (rates including taxes and fees). The sum of all room prices should equal the TotalPrice field. Day rates should be per unit, so the sum of all day rates multiplied by the number of units should equal the room price.

Country codes: For CustomerCountry and CustomerNationality (if you include those fields) make sure to pass the country code as uppercase Alpha-2 ISO-3166 codes.

Currency codes: Make sure they are valid ISO-4217 (uppercase).

Make sure to provide OrderDate and OrderTime. They have to be provided in UTC.

Guest's credit/debit card details can be provided with the Payments field.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"GetBookingId"
booking_idstringrequired

OTA booking ID of the booking to be retrieved.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/GetBookingId?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "GetBookingId",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3",
    "booking_id": 111
  }'

Responses

GetBookingId

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
reservationobject(booking)
Response
application/json
{ "success": true, "reservation": { "OrderId": "123456789", "OrderDate": "2018-04-22", "OrderTime": "18:02:58", "IsCancellation": 0, "IsModification": 0, "OrderAdults": 2, "OrderChildren": 0, "OrderCustomers": 2, "TotalCurrency": "USD", "TotalPrice": 134, "PaymentCollect": "Property", "Customers": [ … ], "Rooms": [ … ] } }

Request

Allows PMS to acknowledge a booking on your WebBookingPro from the PMS side.

  • 4004 - booking cannot be acknowledged. The reason is provided in the msg field.
Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"AckBooking"
booking_idstringrequired

OTA booking ID of the booking to be acknowledged.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/AckBooking?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "AckBooking",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3",
    "booking_id": "H7736-29385551"
  }'

Responses

AckBooking

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": false, "errors": [ { … } ] }

Request

Allows a property to cancel a booking on WebBookingPro from the PMS side.

IMPORTANT: Please contact us to enable this capability for your channel. It is NOT enabled by default.

The reason why the booking is to be canceled is given in the reason field. If the booking cannot be canceled the error code should be provided. Here are possible error codes:

  • 4001 - booking has already departed
  • 4002 - booking is already canceled
  • 4003 - booking cannot be canceled. The reason is provided in the msg field.
Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"CancelBooking"
booking_idstringrequired

OTA booking ID of the booking to be cancelled.

reasonstring

Free text reason given by property as to why the booking was cancelled.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/CancelBooking?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "CancelBooking",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "pms_cid": "mycloudpms1",
    "shared_secret": "s3cr3ts4uc3",
    "booking_id": "H7736-29385551",
    "reason": "Guest called and requested cancellation"
  }'

Responses

CancelBooking

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": false, "errors": [ { … } ] }

Request

Can be used to create a new property (including rooms) on WebBookingPro based on the details that you have in your PMS (eg. property name, address, images, room details, etc). This call needs to be activated explicitly from our side before you can use it. Please talk to your WebBookingPro contact before implementing this call!

Rate plan information was added at a later date and is only transmitted for new build-to-us implementations or if the feature has been enabled explicitly. Note that every room has a default rate plan, and the ID (even across different rooms) is always 0.

Once approved please provide us with your terms & conditions for us to display to a property. You should provide them as a HTML file with only basic styling.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idstring>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

verbstringrequired
Value"CreateProperty"
Propertyobjectrequired
Property.​namestringrequired

Property name

Property.​countrystring^[A-Z]{2}$required

2-letter ISO 3166-1 alpha-2 country code. This is the country the property is located in.

Property.​currencystring^[A-Z]{3}$required

3-letter ISO 4217 currency code. This is the default currency of the property.

Property.​timezonestringrequired

Timezone the property is located in. Check (this document)[https://apidocs.myallocator.com/timezone-list.html] for valid values.

Property.​email_defaultstring(email)required

The default property email address. Defaults to default user email.

Property.​email_channel_bookingstring(email)required

The email address used when forwarding channel booking emails. Defaults to default user email.

Property.​email_contactstring(email)required

The email address of the contact person responsible for the property creation.

Property.​default_min_losinteger>= 1required

Default minimum length of stay setting for this property. See the description for min_los in the ARIUpdate call for more details on this restriction.

Property.​default_max_losinteger>= 0required

Default maximum length of stay setting for this property. See the description for max_los in the ARIUpdate call for more details on this restriction.

0 means there is no restriction.

Property.​breakfaststringrequired

Default breakfast setting for the property. Empty string means no breakfast is available, IN means breakfast is included in the day rates and EX means breakfast is excluded from day rates.

Note that this setting is likely not very useful and too broad.

Enum"""IN""EX"
Property.​weekendArray of stringsrequired

List of weekdays that the property considers to be their weekend.

Note that this setting is likely not very useful.

Items Enum"monday""tuesday""wednesday""thursday""friday""saturday""sunday"
Property.​firstnamestringrequired

First name of property owner/manager.

Property.​lastnamestringrequired

First name of property owner/manager.

Property.​addressobjectrequired

Address of the property.

Property.​address.​address_line_1string or null

First address line of the property (usually the street name and house number)

Property.​address.​address_line_2string or null

Second address line of the property (if applicable)

Property.​address.​citystring or null

City or locality the property is located in

Property.​address.​zipstring or null

Post Code (ZIP) of the property

Property.​address.​statestring or null

State of the property (if applicable)

Property.​address.​countrystring^[A-Z]{2}$required

2-letter ISO 3166-1 alpha-2 country code. This is the country the property is located in. Same as country on the top level.

Property.​address.​websitestring or null

Homepage of the property

Property.​address.​lonstring or null

Geographic longitude of the property, given as decimal degrees. Positive for east, negative for west. Example: -117.15292

Property.​address.​latstring or null

Geographic latitude of the property, given as decimal degrees. Positive for north, negative for south. Example: 32.70954

Property.​address.​phonestring or null

Phone number for the property with international country code (eg. +44 350 5697864)

Property.​address.​faxstring or null

Fax number for the property with international country code (eg. +44 350 5697864)

Property.​business_contactobjectrequired

Contact information for invoicing

Property.​business_contact.​main_contact_namestring or null

Name of the main contact for the property

Property.​business_contact.​company_namestring or null

Name of the company owning the property

Property.​business_contact.​account_manager_namestring or null

Name of the account manager responsible for the property

Property.​business_contact.​vat_idstring or null

Tax ID for the property

Property.​business_contact.​address_line_1string or null

First address line of the company or property owner (usually the street name and house number)

Property.​business_contact.​address_line_2string or null

Second address line of the company or property owner (if applicable)

Property.​business_contact.​statestring or null

State of the company or property owner (if applicable)

Property.​business_contact.​zipstring or null

Post Code (ZIP) of the company or property owner

Property.​business_contact.​citystring or null

City or locality the company or property owner is located in

Property.​business_contact.​countrystring^[A-Z]{2}$required

2-letter ISO 3166-1 alpha-2 country code. This is the country the the company or property owner is located in.

Property.​imagesArray of objectsrequired

List of property-level images

Property.​images[].​urlstring

Publicly accessible URL to the full resolution image

Property.​images[].​descriptionstring

Description of the image to show on a channel (max. 2000 characters)

Property.​images[].​sort_orderinteger>= 0

Number indicating the displayed sort order. Lower numbers means further left/top. Defaults to 0.

Property.​roomsArray of objectsrequired

List of rooms configured for the property

Property.​rooms[].​pms_room_idinteger>= 1required

Room ID on your PMS

Property.​rooms[].​unitsinteger>= 1required

How many rooms of this type there are.

Property.​rooms[].​bedsinteger>= 1required

Number of people that can stay in this room.

Property.​rooms[].​dormitorybooleanrequired

true if it's a dormitory (shared room), false for private rooms.

Property.​rooms[].​genderstring

Required for dormitory

Enum"MALE""FEMALE""MIXED"
Property.​rooms[].​labelstringrequired

Short string that describes the room for displaying purposes.

Property.​rooms[].​descriptionstring or nullrequired

Longer description of the room which describes a room to a potential guest.

Property.​rooms[].​imagesArray of objectsrequired

List of room-level images.

Property.​rooms[].​images[].​urlstringrequired

Publicly accessible URL to the full resolution image

Property.​rooms[].​images[].​descriptionstring or nullrequired

Description of the image to show on a channel (max. 2000 characters)

Property.​rooms[].​images[].​sort_orderinteger>= 0required

Number indicating the displayed sort order. Lower numbers means further left/top. Defaults to 0.

Property.​rooms[].​rateplansArray of objects

List of rate plans configured for the room

Property.​taxesArray of objects(tax_info)

Property taxes and fees.

curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/CreateProperty?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "wbp_property_id": "",
    "wbp_property_password": "",
    "pms_property_id": "12345",
    "pms_cid": "mycloudpms1",
    "verb": "CreateProperty",
    "shared_secret": "s3cr3ts4uc3",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "Property": {
      "name": "Sample Hostel",
      "country": "US",
      "currency": "EUR",
      "email_default": "someone@example.com",
      "email_channel_booking": "bookings@example.com",
      "email_contact": "person@example.com",
      "default_min_los": 3,
      "default_max_los": 0,
      "breakfast": "",
      "weekend": [
        "tuesday",
        "saturday",
        "sunday"
      ],
      "firstname": "John",
      "lastname": "Smith",
      "taxes": [
        {
          "amount": 10.567,
          "applies_per": "booking",
          "calculation_basis": "rate",
          "category": "vat",
          "code": "IVA",
          "description": "Impuesto",
          "id": 4761,
          "is_fee": false,
          "is_inclusive": true,
          "is_per_night": false,
          "is_percent": true,
          "is_refundable": false,
          "name": "IVA"
        }
      ],
      "timezone": "Asia/Thimphu",
      "address": {
        "address_line_1": "Main St",
        "address_line_2": "Annex",
        "city": "San Diego",
        "zip": "92120",
        "state": "CA",
        "country": "US",
        "website": "http://example.com",
        "lon": "32.715736",
        "lat": "-117.161087",
        "phone": "+1 123123123 ",
        "fax": "+1 123123123"
      },
      "business_contact": {
        "main_contact_name": "Jeff Johnson",
        "company_name": "Hostels Inc.",
        "account_manager_name": "Hillary Jackson",
        "vat_id": "US2345678",
        "address_line_1": "Office Street",
        "address_line_2": "3rd floor",
        "state": "Office State",
        "zip": "22222",
        "city": "Office City",
        "country": "DE"
      },
      "images": [
        {
          "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c37.jpg",
          "description": "Outside View",
          "sort_order": 1
        },
        {
          "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c38.jpg",
          "description": "Reception Area",
          "sort_order": 2
        }
      ],
      "rooms": [
        {
          "pms_room_id": 45829,
          "units": 5,
          "beds": 2,
          "dormitory": false,
          "gender": "MIXED",
          "label": "Double Room",
          "description": "A potentially long description about the room",
          "images": [
            {
              "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c37.jpg",
              "description": "Double bed",
              "sort_order": 1
            },
            {
              "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c38.jpg",
              "description": "Bath room",
              "sort_order": 2
            },
            {
              "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c99.jpg",
              "description": "Balcony",
              "sort_order": 3
            }
          ],
          "rateplans": [
            {
              "pms_rate_id": 0,
              "label_public": "Default Rate Plan",
              "label_private": "Default Rate Plan",
              "meal_codes": [
                21
              ]
            },
            {
              "label_public": "Non-refundable",
              "label_private": "NR",
              "pms_rate_id": 850,
              "meal_codes": [
                19,
                21,
                22
              ]
            },
            {
              "label_public": "With Breakfast",
              "label_private": "BR",
              "pms_rate_id": 851,
              "meal_codes": [
                19
              ]
            }
          ]
        },
        {
          "pms_room_id": 290,
          "units": 25,
          "beds": 4,
          "dormitory": false,
          "label": "4-person private",
          "description": null,
          "images": [],
          "rateplans": [
            {
              "label_private": "Default Rate Plan",
              "label_public": "Default Rate Plan",
              "pms_rate_id": 0
            }
          ]
        },
        {
          "pms_room_id": 329,
          "units": 7,
          "beds": 3,
          "dormitory": false,
          "label": "3-person private",
          "description": "Best three bed room in town",
          "images": [
            {
              "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c37.jpg",
              "description": "3-bed room",
              "sort_order": 1
            }
          ],
          "rateplans": [
            {
              "label_public": "Default Rate Plan",
              "label_private": "Default Rate Plan",
              "pms_rate_id": 0
            },
            {
              "pms_rate_id": 853,
              "label_private": "NR",
              "label_public": "Non-refundable"
            }
          ]
        },
        {
          "pms_room_id": 52,
          "units": 3,
          "beds": 30,
          "dormitory": true,
          "gender": "MIXED",
          "label": "30-person mixed shared",
          "description": null,
          "images": [],
          "rateplans": [
            {
              "pms_rate_id": 0,
              "label_public": "Default Rate Plan",
              "label_private": "Default Rate Plan"
            },
            {
              "pms_rate_id": 852,
              "label_public": "Non-refundable",
              "label_private": "NR"
            }
          ]
        }
      ]
    }
  }'

Responses

CreateProperty

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
wbp_property_idintegerrequired

New property ID on WebBookingPro

wbp_property_passwordstring

WebBookingPro will set up first password used for integration. You have to store this password in your system. This can be visible to user or not..

instruction_textstring

The instruction text will be displayed to the hotel after the property creation is complete. We will escape any HTML characters, so please only return plain text. You can include linebreaks (\n) which will be converted into actual line breaks for HTML display.

instruction_linkstring

If an instruction link is provided we will display the clickable link below the instruction text (if present).

room_mappingsArray of objects

Returning this field will help PMS to automatically map the WebBookingPro room IDs to the PMS room IDs. This is required to automatically send a full refresh after successful property creation. We strongly recommend that you return this field. If you do not support rate plans you do not need to return wbp_rate_id and pms_rate_id.

Response
application/json
{ "success": false, "errors": [ { … } ] }

Request

Delete room after it has been deleted on your PMS.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

roomobjectrequired

Room data

room.​pms_room_idinteger>= 1required

Room ID on the your PMS

verbstringrequired
Value"DeleteRoom"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/DeleteRoom?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "DeleteRoom",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "shared_secret": "s3cr3ts4uc3",
    "pms_cid": "mycloudpms1",
    "room": {
      "pms_room_id": 45769
    }
  }'

Responses

DeleteRoom

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": true }

Request

Create or update room after it has been changed on the your PMS

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

roomobjectrequired
room.​pms_room_idinteger>= 1required

Room ID on your PMS

room.​wbp_room_idstring

Room ID on the OTA.

room.​unitsinteger>= 1required

How many rooms of this type there are.

room.​bedsinteger>= 1required

Number people that can stay in this room.

room.​dormitorybooleanrequired

If true it's a dormitory (shared room), false for private rooms.

room.​genderstring

Gender. Required for dormitory

Enum"MALE""FEMALE""MIXED"
room.​labelstringrequired

Short string that describes the room for displaying purposes.

room.​descriptionstring or nullrequired

Longer description of the room which describes a room to a potential guest.

room.​imagesArray of objectsrequired

List of property-level images

room.​images[].​urlstringrequired

Publicly accessible URL to the full resolution image

room.​images[].​descriptionstringrequired

Description of the image to show on a channel (max. 2000 characters)

room.​images[].​sort_orderinteger>= 0required

Number indicating the displayed sort order. Lower numbers means further left/top. Defaults to 0.

room.​rateplansArray of objects

List of rate plans configured for the room

verbstringrequired
Value"UpdateRoom"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/UpdateRoom?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "UpdateRoom",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "shared_secret": "s3cr3ts4uc3",
    "pms_cid": "mycloudpms1",
    "room": {
      "pms_room_id": 45829,
      "units": 5,
      "beds": 2,
      "dormitory": false,
      "label": "Double Room",
      "description": "A potentially long description about the room",
      "gender": "MIXED",
      "images": [
        {
          "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c37.jpg",
          "description": "Double bed",
          "sort_order": 1
        },
        {
          "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c38.jpg",
          "description": "Bath room",
          "sort_order": 2
        },
        {
          "url": "https://inbox.myallocator.com/n/user_image.xt?pid=1&img=97f471e5-5898-4e9a-ab94-da0751e19c99.jpg",
          "description": "Balcony",
          "sort_order": 3
        }
      ],
      "rateplans": [
        {
          "pms_rate_id": 0,
          "label_public": "Default Rate Plan",
          "label_private": "Default Rate Plan",
          "meal_codes": [
            21
          ]
        },
        {
          "label_public": "Non-refundable",
          "label_private": "NR",
          "pms_rate_id": 850,
          "meal_codes": [
            19,
            21,
            22
          ]
        },
        {
          "label_public": "With Breakfast",
          "label_private": "BR",
          "pms_rate_id": 851,
          "meal_codes": [
            19
          ]
        }
      ]
    }
  }'

Responses

UpdateRoom

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
room_mappingsArray of objects
Response
application/json
{ "success": true }

Request

Delete rateplan after it has been deleted on your PMS.

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

rateplanobjectrequired

Rate plan to delete

rateplan.​pms_rate_idinteger>= 1required

Rate plan ID on your PMS

verbstringrequired
Value"DeleteRatePlan"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/DeleteRatePlan?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "DeleteRatePlan",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "shared_secret": "s3cr3ts4uc3",
    "pms_cid": "mycloudpms1",
    "rateplan": {
      "pms_rate_id": 115326
    }
  }'

Responses

DeleteRatePlan

Bodyapplication/json
errorsArray of objects

Array of error objects. Required when success is false.

successbooleanrequired
Enumtruefalse
Response
application/json
{ "success": true }

Request

Create of update rate plan after it has been changed on your PMS

Security
shared_secret
Bodyapplication/jsonrequired
pms_property_idinteger>= 1required

Property ID on the your PMS

wbp_property_idstringrequired

Username, login or property ID on the OTA

wbp_property_passwordstringrequired

Password for property on WebBookingPro

guidstring^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-...required

Request reference ID, used for debugging and support requests.

shared_secretstringrequired

Authentication between the PMS and the WebBookingPro. Identical for all requests. Not to be shared with customers.

pms_cidstring^[a-z0-9]+$required

PMS ID as given by WebBookingPro

rateplanobjectrequired
rateplan.​pms_rate_idinteger>= 1required

Rate plan ID on your PMS

rateplan.​wbp_rate_idstring

Channel rate plan ID.

rateplan.​label_privatestringrequired

The private name of the rate plan, only shown to the property.

rateplan.​label_publicstringrequired

The public name of the rate plan, that can also be shown to customers.

rateplan.​max_occupancyinteger>= 0

Maximum occupancy, 0 means no restrictions.

rateplan.​min_occupancyinteger>= 0

Minimum occupancy, 0 means no restrictions.

rateplan.​meal_codesArray of integers

Combination (list) of meal codes that are available for this rate plan. 1 for All-Inclusive, 19 for Breakfast, 21 for Lunch, 22 for Dinner

Items Enum1192122
verbstringrequired
Value"UpdateRatePlan"
curl -i -X POST \
  'https://webbookingpro.redocly.app/_mock/wbpapi/UpdateRatePlan?shared_secret=YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "verb": "UpdateRatePlan",
    "wbp_property_id": 111,
    "wbp_property_password": "very-secret-password",
    "pms_property_id": "25678",
    "guid": "6C08B96E-450D-4E6A-9933-7D0305730305",
    "shared_secret": "s3cr3ts4uc3",
    "pms_cid": "mycloudpms1",
    "rateplan": {
      "pms_rate_id": 115629,
      "label_private": "NR",
      "label_public": "Non-refundable",
      "max_occupancy": 3,
      "min_occupancy": 1,
      "meal_codes": [
        19,
        21,
        22
      ],
      "wbp_rate_id": "3456"
    }
  }'

Responses

UpdateRatePlan

Bodyapplication/json
One of:
successbooleanrequired
Valuetrue
room_mappingsArray of objects
Response
application/json
{ "success": true }
Operations
Operations
Operations
Operations
Operations