Download OpenAPI specification:Download
Account
can have multiple Properties
, but each Property
can only have one Account
.RoomType
, and iBex will automatically assign the appropriate units.The iBex API is a fully JSON api. Responses are returned with the content type application/vnd.ibex.v1+json
.
You may send an Accept
header. Any content type requested that is not supported will return a 406: Not Acceptable
.
When sending a request payload, the endpoint will only accept Content-Type: application/json
for requests, and will return a 400: Bad Request
if no content type is provided on a request. You do not need to set content type on GET
requests.
The iBex API is versioned with the request Accept
and response Content-Type
headers:
Accept: application/vnd.ibex.{version}+json
You may send an Accept
header with the version number listed to ensure the same response is given.
Omitting a version number and sending Accept: application/json
(or no Accept
header at all) means that the latest version will be assumed.
The Content-Type
of the response will always indicate what version of the API served your request.
Responses from the API should be cached to limit the amount of calls being made. Too many hits may result in our system from temporarily blocking access.
iBex authenticates using OAuth2 (Authorization Code Grant Type) method. Read more about OAuth2.
After you have been issued a client_id
and client_secret
by Seekom, you can connect to the API.
This authentication method means the account you want to access must consent, via the OAuth2 mechanisms.
Seekom/iBex cannot grant access to accounts specifically.
Please note that by authenticating you are being granted access to an individual account rather than every
account across iBex. The client_id
and client_secret
can be used to integrate with multiple accounts but each
one will require a separate authentication.
Request authorisation with iBex and a client. Note: This must be targeted at the iBex Authentication server, not the API. This is not an API call, instead you need to redirect your users to this page in a web browser.
After the user signs in and clicks either Approve or Deny, the page will redirect back to your redirect_url
address with authorisation code (or an error).
https://yourwebsite.com?state={random}&code={authorisation_code}
Compare thestate
with what you originally generated, and if it matches hold on to thecode
for the next step, requesting a token.
client_id required | string Example: client_id=abc1234 Client ID is provided by iBex. |
response_type required | string Value: "code" |
redirect_uri required | string Example: redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Freturn The encoded URI the client that iBex will post the token / error to after the user has signed in. It must match the registered URL. |
state required | string Example: state=abc123456 A random string you generate for CSRF protection. iBex will return this back to you with the authentication response and you should compare the two before proceeding. |
Sandbox
Production
Request an access token, which can then be used to access the rest of the API.
client_id | string The ID issued by Seekom |
client_secret | string The secret issued by Seekom |
grant_type | string Enum: "authorization_code" "refresh_token" |
code | string Authorization code used to generate access token |
Returns access token.
Not Found
Sandbox
Production
{- "client_id": "96601ffd639d73bbcd16a5c5b0afc1b2",
- "client_secret": "Z8bB90qyQBZqPXguNUoEvSMQbyvQuvUSjdFCLoH/TLvqMfzAvJF1vDQTXbWSDKNn",
- "grant_type": "authorization_code",
- "code": "2f9b50112fa921aaef8f04931d34617a"
}
{- "access_token": "Z8bB90qyQBZqPXguNUoEvSMQbyvQuvUSjdFCLoH/TLvqMfzAvJF1vDQTXbWSDKNn",
- "token_type": "Bearer",
- "expires_in": 86400,
- "refresh_token": "J2OhjUoTOHpCHd5ho3MLwia7QwHxUxU+Wz08pYo7YaBDih5TDYzOH8ViclvrlzDD",
- "refresh_token_expires_in": 31536000
}
A property represents a physical location that holds rooms/units to sell. Many properties can belong to a single account. A booking belongs to a single property. An active user can be restricted to one or more properties, and their privileges can differ between each property.
Fetch a paginated list of all properties
types | array Example: types=1,2,3 The property types to filter against. See the Property MetaData for available values. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Property Objects
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "properties",
- "id": 6080,
- "attributes": {
- "name": "Albion Manor",
- "type": 3,
- "sale-type": 0,
- "enabled": true,
- "currency": "NZD",
- "closed-date-ranges": [
- {
- "from": {
- "dateTime": {
- "date": "2014-04-25 00:00:00",
- "timezone_type": 3,
- "timezone": "Pacific/Auckland"
}
}, - "to": {
- "dateTime": {
- "date": "2014-04-27 00:00:00",
- "timezone_type": 3,
- "timezone": "Pacific/Auckland"
}
}
}
], - "description": "A beautiful property found in the Bowerstone Old Quarter region.",
- "promotions": "Stay 2 nights to get a better deal",
- "lead-in-special": "Stay 2 nights to get a better deal",
- "carpark": "Parking is on the street only.",
- "additional-information": "Other useful property information that was not categorised anywhere else.",
- "directions": "From the Airport follow the I32 until the P12 intersection.",
- "location": "Theme Parks are right across the road.",
- "star-rating": "2.5",
- "reception-hours": "Open from 2pm until 5pm.",
- "creditcard": {
- "fee": 2.5,
- "extra": {
- "id": 1234,
- "name": "Credit Card Fee"
}
}, - "times": {
- "checkin": "1500",
- "checkout": "1000",
- "max-checkin": "2100"
}, - "facilities": {
- "property": [
- 3
], - "room": "Each room contains a mini-fridge.",
- "general": [
- 3
]
}, - "policies": {
- "payment": "Payments are required up front.",
- "cancellation": "Cancelling a booking incurs a penalty fee.",
- "child": "Children are allowed but must be accompanied by an adult.",
- "checkIn": "Check in can occur at reception."
}, - "address": {
- "physical": "123 Fake Street\nKilbirnie\nWellington 6022",
- "postal": "PO Box 1\nKilbirnie\nWellington 6022",
- "country": {
- "id": 108,
- "name": "New Zealand",
- "iso-short-code": "NZL",
- "code": "NZ"
}, - "region": {
- "id": 1,
- "name": "Wellington Central"
}, - "sub-region": {
- "id": 1,
- "name": "Wellington CBD"
}
}, - "phone": {
- "main": "+64 123 456 789",
- "tollfree": "+64 123 456 789",
- "fax": "+64 123 456 789"
}, - "contact": {
- "name": "Joan",
- "email": "contact@example.com"
}, - "deposit": {
- "type": "percentage",
- "percentage": 0.25,
- "overrides": [
- {
- "days": 3,
- "percentage": 0.4
}, - {
- "days": 5,
- "percentage": 0.3
}
]
}, - "display-order": 3
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/properties?page=1",
- "first": "/properties?page=1",
- "next": "/properties?page=1",
- "last": "/properties?page=1"
}
}
Fetch a single property based on the property ID.
property_id required | int Example: 12345 The ID of the property. |
include | string Value: "photos" Example: include=photos Include additional attributes with the main request. This alters the request. |
Returns a single Property Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "properties",
- "id": 6080,
- "attributes": {
- "name": "Albion Manor",
- "type": 3,
- "sale-type": 0,
- "enabled": true,
- "currency": "NZD",
- "closed-date-ranges": [
- {
- "from": {
- "dateTime": {
- "date": "2014-04-25 00:00:00",
- "timezone_type": 3,
- "timezone": "Pacific/Auckland"
}
}, - "to": {
- "dateTime": {
- "date": "2014-04-27 00:00:00",
- "timezone_type": 3,
- "timezone": "Pacific/Auckland"
}
}
}
], - "description": "A beautiful property found in the Bowerstone Old Quarter region.",
- "promotions": "Stay 2 nights to get a better deal",
- "lead-in-special": "Stay 2 nights to get a better deal",
- "carpark": "Parking is on the street only.",
- "additional-information": "Other useful property information that was not categorised anywhere else.",
- "directions": "From the Airport follow the I32 until the P12 intersection.",
- "location": "Theme Parks are right across the road.",
- "star-rating": "2.5",
- "reception-hours": "Open from 2pm until 5pm.",
- "creditcard": {
- "fee": 2.5,
- "extra": {
- "id": 1234,
- "name": "Credit Card Fee"
}
}, - "times": {
- "checkin": "1500",
- "checkout": "1000",
- "max-checkin": "2100"
}, - "facilities": {
- "property": [
- 3
], - "room": "Each room contains a mini-fridge.",
- "general": [
- 3
]
}, - "policies": {
- "payment": "Payments are required up front.",
- "cancellation": "Cancelling a booking incurs a penalty fee.",
- "child": "Children are allowed but must be accompanied by an adult.",
- "checkIn": "Check in can occur at reception."
}, - "address": {
- "physical": "123 Fake Street\nKilbirnie\nWellington 6022",
- "postal": "PO Box 1\nKilbirnie\nWellington 6022",
- "country": {
- "id": 108,
- "name": "New Zealand",
- "iso-short-code": "NZL",
- "code": "NZ"
}, - "region": {
- "id": 1,
- "name": "Wellington Central"
}, - "sub-region": {
- "id": 1,
- "name": "Wellington CBD"
}
}, - "phone": {
- "main": "+64 123 456 789",
- "tollfree": "+64 123 456 789",
- "fax": "+64 123 456 789"
}, - "contact": {
- "name": "Joan",
- "email": "contact@example.com"
}, - "deposit": {
- "type": "percentage",
- "percentage": 0.25,
- "overrides": [
- {
- "days": 3,
- "percentage": 0.4
}, - {
- "days": 5,
- "percentage": 0.3
}
]
}, - "display-order": 3
}
}
}
Fetch the photos for single property based on the property ID.
property_id required | int Example: 12345 The ID of the property. |
Returns a collection of Property Photos
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "photos",
- "id": "ff1cf80e3be972f49832b6d82c3ab968",
- "attributes": {
- "description": "Photo Title/Description",
- "title": "string",
- "dimensions": {
- "width": 640,
- "height": 480
},
}
}
]
}
List of all static data that is used by bookings/properties, such as facility codes or star rating. These may be referenced when loading specific properties. This rarely changes and can be cached locally for speed.
A JSON collection of different meta objects
Unauthorized Access
Sandbox
Production
{- "facilties": {
- "1": "Parking",
- "2": "Laundry",
- "3": "Elevator",
- "4": "Accessible",
- "5": "Wifi",
- "6": "Conference",
- "7": "Business Facilities",
- "8": "Room Service",
- "9": "Restaurant",
- "10": "Bar",
- "11": "Pets",
- "12": "Pool",
- "13": "Spa",
- "14": "Air Conditioning",
- "15": "Satellite TV",
- "16": "Playground",
- "17": "24-Hour Front Desk",
- "18": "Beach",
- "19": "BBQ Facilities",
- "20": "Fitness Center",
- "21": "Netflix",
- "22": "Sky TV",
- "23": "Free Parking",
- "24": "Free Wifi"
}, - "types": {
- "3": "PMC Home Rental",
- "4": "Bed & Breakfast",
- "5": "Hut / Cabin / Chalet",
- "6": "Holiday Park",
- "19": "Backpackers / Hostel",
- "20": "Hotel",
- "22": "Lodge",
- "27": "Motel",
- "30": "Resort",
- "33": "Campground",
- "49": "Other"
}, - "sales-types": {
- "0": "Accommodation",
- "1": "Item Only",
- "2": "Venue"
}, - "ratings": {
- "0": "Pending",
- "1": "1 Star",
- "2": "2 Stars",
- "3": "3 Stars",
- "4": "4 Stars",
- "5": "5 Stars",
- "": "None",
- "1.5": "1.5 Stars",
- "2.5": "2.5 Stars",
- "3.5": "3.5 Stars",
- "4.5": "4.5 Stars"
}, - "times": {
- "1000": "10:00 AM",
- "1030": "10:30 AM",
- "1100": "11:00 AM",
- "1130": "11:30 AM",
- "1200": "12:00 PM",
- "1230": "12:30 PM",
- "1300": "01:00 PM",
- "1330": "01:30 PM",
- "1400": "02:00 PM",
- "1430": "02:30 PM",
- "1500": "03:00 PM",
- "1530": "03:30 PM",
- "1600": "04:00 PM",
- "1630": "04:30 PM",
- "1700": "05:00 PM",
- "1730": "05:30 PM",
- "1800": "06:00 PM",
- "1830": "06:30 PM",
- "1900": "07:00 PM",
- "1930": "07:30 PM",
- "2000": "08:00 PM",
- "2030": "08:30 PM",
- "2100": "09:00 PM",
- "2130": "09:30 PM",
- "2200": "10:00 PM",
- "2230": "10:30 PM",
- "2300": "11:00 PM",
- "0000": "12:00 AM",
- "0030": "12:30 AM",
- "0100": "01:00 AM",
- "0130": "01:30 AM",
- "0200": "02:00 AM",
- "0230": "02:30 AM",
- "0300": "03:00 AM",
- "0330": "03:30 AM",
- "0400": "04:00 AM",
- "0430": "04:30 AM",
- "0500": "05:00 AM",
- "0530": "05:30 AM",
- "0600": "06:00 AM",
- "0630": "06:30 AM",
- "0700": "07:00 AM",
- "0730": "07:30 AM",
- "0800": "08:00 AM",
- "0830": "08:30 AM",
- "0900": "09:00 AM",
- "0930": "09:30 AM"
}
}
A booking is a reservation covering dates and different room/rates/units.
ref
and id
(also known as resid
). The id
is the unique ID used by the API, while the ref
is the visual booking reference customers should be presented with.rmresid
Creating a Booking Flow Creating a booking is always a multi-step process. Reserve -> (Optionally collect payment) -> Accept/Reject.
Create a Booking Reservation Request. - This lets you reserve the rooms/units, and finalise any prices. At this stage you've not yet charged the customer.
iBex will respond with either a success message, or an error. If successful, iBex will return with the booking details, including id
and the price.
NOTE This reservation will last for about 20 minutes. Any longer and iBex will automatically cancel it as it blocks availability.
ref
(the reference to present to the customer).
Otherwise send the reject message which will cancel the reservation and release the availability again.Fetch a paginated list of all bookings based on the specified property
property_id required | int Example: 12345 The ID of the property. |
sold_on | timestamp Example: sold_on=2020-01-01T12:00:00 Only show bookings sold after this date |
last_updated | timestamp Example: last_updated=2020-01-01T12:00:00 Only show bookings last updated after this date |
last_change_id | int Example: last_change_id=12345 Only show bookings with a change id greater than or equal to this value. |
from | timestamp Example: from=2020-01-20 Show bookings arriving on or after the specified date. |
to | timestamp Example: to=2020-01-22 Show bookings departing on or before the specified date. |
status_codes | Array of integers Example: status_codes=1,5,7 Limit to just the specified status or statuses.
|
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Booking objects
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "bookings",
- "id": 1000000,
- "attributes": {
- "ref": 1001,
- "property-id": 6680,
- "status": 4,
- "status-description": "Instant Confirmed",
- "lead-guest": {
- "customer-id": 1234,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "mobile": 123456789,
- "fax": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}, - "priced-for": {
- "id": "account",
- "type": "account"
}, - "balance": 1000,
- "total-cost": 5000,
- "payments-amount": 2500,
- "invoiced-amount": 1500,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": 1500,
- "total-amount": 1500
}, - "booked": "2019-12-20 00:18:15 (NZT)",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n",
- "voucher": "NEWVOUCHER12345"
}, - "eta": "2pm",
- "external-payment-ref": null,
- "order-ref": "NEWVOUCHER12345",
- "sell-currency": "NZD",
- "last-updated": "2019-12-20 00:18:15 (NZT)",
- "last-change-id": 12345,
- "has-extras": true,
- "total-nights": 12,
- "checkin": "2020-02-01T14:00:00.000Z",
- "checkout": "2020-02-12T10:00:00.000Z",
- "never-apploy-credit-card-fee": false,
- "extras": [
- {
- "id": 123456,
- "extra-id": 1234567,
- "title": "Newspaper",
- "quantity": 1,
- "cost": 10
}
], - "rooms": [
- {
- "id": 123456789,
- "name": "Room 1",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 0,
- "infants": 0
}, - "rate": 550,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456789,
- "unit": 123456,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}, - {
- "id": 123456790,
- "name": "Room 2",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 1,
- "infants": 0
}, - "rate": 650,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456791,
- "unit": 123457,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}
]
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/bookings?page=1",
- "first": "/bookings?page=1",
- "next": "/bookings?page=2",
- "last": "/bookings?page=5"
}
}
Create a booking reservation. This will mark the rooms/units as reserved for a short period of time, until the booking is either accepted or rejected. If the time limit passes (about 20 minutes), the reservation will automatically reject.
This method is used to reserve the units, and then you can collect payment in whatever method you want, before calling the accept or reject endpoint to complete the booking.
property_id required | int Example: 12345 The ID of the property. |
status required | int The status to create the booking as.
|
lead-guest required | object or object Details about the person making the booking |
extras required | Array of objects Required for item-only bookings, optional for accommodation bookings. |
agent | string Nullable The agent ID the booking is to be made against. |
notes | object Nullable |
attributes | object Nullable |
Returns a single Booking Object if created
Unauthorized Access
Not Found
Validation Error
Sandbox
Production
{- "extras": [
- {
- "extra": 654321,
- "quantity": 1,
- "notes": "Credit card fee applied",
- "percentage": 0.02
}
], - "status": 4,
- "lead-guest": {
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": "123-456-789",
- "mobile": "123-456-789",
- "fax": "123-456-789",
- "email": "jane@example.com",
- "address": {
- "street": "123 Hogwarts Street",
- "suburb": "Forbidden Forest",
- "city": "London",
- "post-code": 4022,
- "country": 108
}, - "newsletter": true,
- "notes-ref": "Notes that are attached to the customer.",
- "dob": "1988-07-07T00:00:00.000Z",
- "vehicle-reg": "WR1111",
- "memberships": [ ]
}, - "agent": "seekom",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n",
- "voucher": "NEWVOUCHER12345\n"
}, - "attributes": {
- "found-via": "Seekom Website"
}
}
{- "data": {
- "type": "bookings",
- "id": 1000000,
- "attributes": {
- "ref": 1001,
- "property-id": 6680,
- "status": 5,
- "status-description": "Confirmed Reserved",
- "lead-guest": {
- "customer-id": 1234,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "mobile": 123456789,
- "fax": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}, - "priced-for": {
- "id": "account",
- "type": "account"
}, - "balance": 1000,
- "total-cost": 5000,
- "payments-amount": 2500,
- "invoiced-amount": 1500,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": 1500,
- "total-amount": 1500
}, - "booked": "2019-12-20 00:18:15 (NZT)",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n",
- "voucher": "NEWVOUCHER12345"
}, - "eta": "2pm",
- "external-payment-ref": null,
- "order-ref": "NEWVOUCHER12345",
- "sell-currency": "NZD",
- "last-updated": "2019-12-20 00:18:15 (NZT)",
- "last-change-id": 12345,
- "has-extras": true,
- "total-nights": 12,
- "checkin": "2020-02-01T14:00:00.000Z",
- "checkout": "2020-02-12T10:00:00.000Z",
- "never-apploy-credit-card-fee": false,
- "rooms": [
- {
- "id": 46611,
- "name": "Jane",
- "room-type": 543,
- "rate-type": 910,
- "pax": {
- "adults": 2,
- "children": 1,
- "infants": 0
}, - "rate": 550,
- "datetime-in": "2020-07-20 12:00:00 (NZST)",
- "datetime-out": "2020-07-23 10:00:00 (NZST)",
- "notes": "These are private notes stored against the room",
- "eta": "2PM",
- "vehicle-registration": "WR1111",
- "extras": [
- {
- "id": 20245,
- "extra-id": 1142,
- "title": "Ski Pass (per person)",
- "cost": 3
}
], - "units": [
- {
- "id": 42534,
- "unit": 3104,
- "key-code": false,
- "unit-type": {
- "id": 3070,
- "name": "1 Bedrooms",
- "order": 7
}
}
], - "checked-in-out": 0
}
]
}
}
}
Fetch a single booking based on the booking ID
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
Returns a single Booking Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "bookings",
- "id": 1000000,
- "attributes": {
- "ref": 1001,
- "property-id": 6680,
- "status": 4,
- "status-description": "Instant Confirmed",
- "lead-guest": {
- "customer-id": 1234,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "mobile": 123456789,
- "fax": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}, - "priced-for": {
- "id": "account",
- "type": "account"
}, - "balance": 1000,
- "total-cost": 5000,
- "payments-amount": 2500,
- "invoiced-amount": 1500,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": 1500,
- "total-amount": 1500
}, - "booked": "2019-12-20 00:18:15 (NZT)",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n",
- "voucher": "NEWVOUCHER12345"
}, - "eta": "2pm",
- "external-payment-ref": null,
- "order-ref": "NEWVOUCHER12345",
- "sell-currency": "NZD",
- "last-updated": "2019-12-20 00:18:15 (NZT)",
- "last-change-id": 12345,
- "has-extras": true,
- "total-nights": 12,
- "checkin": "2020-02-01T14:00:00.000Z",
- "checkout": "2020-02-12T10:00:00.000Z",
- "never-apploy-credit-card-fee": false,
- "extras": [
- {
- "id": 123456,
- "extra-id": 1234567,
- "title": "Newspaper",
- "cost": 10
}
], - "rooms": [
- {
- "id": 123456789,
- "name": "Room 1",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 0,
- "infants": 0
}, - "rate": 550,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456789,
- "unit": 123456,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}, - {
- "id": 123456790,
- "name": "Room 2",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 1,
- "infants": 0
}, - "rate": 650,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456791,
- "unit": 123457,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}
]
}
}
}
Mark the booking as accepted
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
block-emails | boolean Example: block-emails=false If true then emails will not be sent to the Customer by iBex automatically. |
payment required | object |
Returns the completed booking object.
Unauthorized Access
Not Found
Sandbox
Production
{- "payment": {
- "amount": 150,
- "description": "Deposit taken",
- "hold": false,
- "method": "Cash"
}
}
{- "data": {
- "type": "bookings",
- "id": 1000000,
- "attributes": {
- "ref": 1001,
- "property-id": 6680,
- "status": 4,
- "status-description": "Instant Confirmed",
- "lead-guest": {
- "customer-id": 1234,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}, - "priced-for": {
- "id": "account",
- "type": "account"
}, - "balance": 1000,
- "total-cost": 5000,
- "payments-amount": 2500,
- "invoiced-amount": 1500,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": 1500,
- "total-amount": 1500
}, - "booked": "2019-12-20 00:18:15 (NZT)",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n"
}, - "eta": "2pm",
- "external-payment-ref": null,
- "order-ref": "NEWVOUCHER12345",
- "sell-currency": "NZD",
- "last-updated": "2019-12-20 00:18:15 (NZT)",
- "last-change-id": 12345,
- "has-extras": true,
- "total-nights": 12,
- "checkin": "2020-02-01T14:00:00.000Z",
- "checkout": "2020-02-12T10:00:00.000Z",
- "never-apploy-credit-card-fee": false,
- "extras": [
- {
- "id": 123456,
- "extra-id": 1234567,
- "title": "Newspaper",
- "cost": 10
}
], - "rooms": [
- {
- "id": 123456789,
- "name": "Room 1",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 0,
- "infants": 0
}, - "rate": 550,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456789,
- "unit": 123456,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}, - {
- "id": 123456790,
- "name": "Room 2",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 1,
- "infants": 0
}, - "rate": 650,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456791,
- "unit": 123457,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}
]
}
}
}
Mark the booking as rejected
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
Booking was rejected.
Unauthorized Access
Not Found
Sandbox
Production
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Update the lead guest of a booking
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
lead-guest required | object or object Details about the person making the booking |
Returns a lead guest object if updated
Unauthorized Access
Not Found
Sandbox
Production
{- "lead-guest": {
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "mobile": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}
}
}
{- "data": {
- "type": "lead-guest",
- "id": 1234,
- "attributes": {
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "mobile": 123456789,
- "fax": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}
}
}
Insert/Update the notes attached to a booking
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
action required | string Enum: "add" "modify"
|
field required | string Enum: "base" "external" "external2" "voucher" The name of the note field that requires adding/modifying. |
value required | string The actual notes field to append/write. |
Returns the completed booking object.
Unauthorized Access
Not Found
Sandbox
Production
Append some text to the existing note
{- "action": "add",
- "field": "external",
- "value": "This note is added to the end"
}
{- "data": {
- "base": "First notes value",
- "external": "Second notes value",
- "external2": "Third notes value",
- "voucher": "Voucher / Order ref"
}
}
Update a room reservation of a booking
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
room_reservation_id required | int Example: 12345 The ID of the room reservation. |
units | Array of objects Details about the units attached to the room reservation. |
room-type | int The ID of the room type |
rate-type | int The ID of the rate type |
name | string Nullable The room reservation name, leave blank for an automated generated name. |
pax | object An object containing the number of pax (people) in the room reservation. |
rate | float The per-period cost of the room reservation. The period is determined by the rate type. |
datetime-in | timestamp The date and time the room reservation starts from. |
datetime-out | timestamp The date and time the room reservation ends at. |
notes | string Nullable General proviate notes on a room - not shown to customers. |
eta | string Nullable A note field that indicates the ETA. The values have no pattern to them. |
vehicle-registration | string Nullable The licence plate of the vehicle attached to this room reservation. |
Returns the completed room reservation object.
Validation Error
Unauthorized Access
Not Found
Sandbox
Production
Update various room reservation details
{- "datetime-in": "2020-01-01T14:00:00.000Z",
- "datetime-out": "2020-01-05T10:00:00.000Z",
- "pax": {
- "adults": 2,
- "children": 1
}, - "name": "Updated reservation name",
- "notes": "Updated notes"
}
{- "data": {
- "type": "room-reservation",
- "id": 1234567,
- "attritubes": {
- "id": null,
- "name": "string",
- "room-type": null,
- "rate-type": null,
- "pax": {
- "adults": null,
- "children": null,
- "infants": null
}, - "rate": null,
- "datetime-in": null,
- "datetime-out": null,
- "notes": "string",
- "eta": "string",
- "vehicle-registration": "string",
- "units": [
- {
- "id": null,
- "unit": null,
- "key-code": "string",
- "unit-type": {
- "id": null,
- "name": "string",
- "order": null
}
}
], - "extras": [
- {
- "id": null,
- "extra-id": null,
- "title": "string",
- "cost": null
}
], - "checked-in-out": 2
}
}
}
Check-in a single room reservation.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
room_reservation_id required | int Example: 12345 The ID of the room reservation. |
reverse | boolean Default: false If true this will undo the check-in and perform an un-check-in. |
Room reservation was checked-in.
Unauthorized Access
Not Found
Unacceptable. Room Reservation was not in a valid state to check-in.
Sandbox
Production
{- "reverse": false
}
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Check-out a single room reservation.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
room_reservation_id required | int Example: 12345 The ID of the room reservation. |
reverse | boolean Default: false If true this will undo the check-out and perform an un-check-out. |
Room reservation was checked-out.
Unauthorized Access
Not Found
Unacceptable. Room Reservation was not in a valid state to check-out.
Sandbox
Production
{- "reverse": false
}
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Check-in all room reservations in a booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
reverse | boolean Default: false If true this will undo the check-in and perform an un-check-in. |
Room reservations were checked-in.
Unauthorized Access
Not Found
Unacceptable. Room Reservation was not in a valid state to check-in.
Sandbox
Production
{- "reverse": false
}
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Check-out all room reservations in a booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
reverse | boolean Default: false If true this will undo the check-out and perform an un-check-out. |
Room reservations were checked-out.
Unauthorized Access
Not Found
Unacceptable. Room Reservation was not in a valid state to check-out.
Sandbox
Production
{- "reverse": false
}
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Cancel the booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
Booking was cancelled.
Unauthorized Access
Not Found
Unacceptable. The booking couldn't be cancelled.
Sandbox
Production
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Uncancel a booking. This is a booking that was previously cancelled, and returning it to a confirmed state.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
Booking was uncancelled.
Unauthorized Access
Not Found
Unacceptable. The booking couldn't be cancelled.
Sandbox
Production
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Add one or more extras to a booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
extras required | Array of objects |
Returns the completed booking object.
Validation Error
Unauthorized Access
Not Found
Sandbox
Production
{- "extras": [
- {
- "quantity": 2,
- "notes": "Some notes to apply to the extra's reservation",
- "price-per-unit": 10,
- "apply-to-booking": true
}
]
}
{- "data": {
- "type": "bookings",
- "id": 123456789,
- "attributes": {
- "ref": null,
- "property-id": null,
- "status": null,
- "status-description": "string",
- "lead-guest": {
- "customer-id": 123456,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": "123-456-789",
- "mobile": "123-456-789",
- "fax": "123-456-789",
- "email": "jane@example.com",
- "address": {
- "street": "123 Hogwarts Street",
- "suburb": "Forbidden Forest",
- "city": "London",
- "post-code": 4022,
- "country": 108
}, - "newsletter": true,
- "notes-ref": "string",
- "dob": "1988-07-07T00:00:00.000Z",
- "vehicle-reg": "WR1111",
- "memberships": [
- null
]
}, - "priced-for": {
- "id": "string",
- "type": "account"
}, - "balance": null,
- "total-cost": null,
- "payments-amount": null,
- "invoiced-amount": null,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": null,
- "total-amount": null
}, - "booked": null,
- "notes": {
- "base": "string",
- "external": "string",
- "external2": "string",
- "voucher": "string"
}, - "eta": "string",
- "external-payment-ref": "string",
- "order-ref": "string",
- "sell-currency": "string",
- "last-updated": null,
- "last-change-id": null,
- "has-extras": true,
- "total-nights": null,
- "checkin": null,
- "checkout": null,
- "rooms": [
- {
- "id": null,
- "name": "string",
- "room-type": null,
- "rate-type": null,
- "pax": {
- "adults": null,
- "children": null,
- "infants": null
}, - "rate": null,
- "datetime-in": null,
- "datetime-out": null,
- "notes": "string",
- "eta": "string",
- "vehicle-registration": "string",
- "units": [
- {
- "id": null,
- "unit": null,
- "key-code": "string",
- "unit-type": {
- "id": null,
- "name": "string",
- "order": null
}
}
], - "extras": [
- {
- "id": null,
- "extra-id": null,
- "title": "string",
- "cost": null
}
], - "checked-in-out": 2
}
], - "extras": [
- {
- "id": null,
- "extra-id": null,
- "title": "string",
- "cost": null
}
]
}
}
}
Modify one or more extras within a room's / booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
extra_reservation_id required | int Example: 12345 The ID of the extra reservation. |
quantity | int [ 1 .. 99 ] The number of this type of extra that should be added. The price will be multipled by this amount. |
notes | string Nullable Notes held against the extra reservation. |
room-reservation-id | int The ID of the specific room reservation this extra should be attached to. If you wish
to attach an extra the whole booking see |
apply-to-booking | boolean If set to true extra will attached to the whole booking. If you wish
to attach extra to a specific room see |
price-per-unit | float If provided this will override the standard price-per-unit. This amount is multiplied by
the quantity to calculate the final price.
|
Returns the completed booking object.
Validation Error
Unauthorized Access
Not Found
Sandbox
Production
{- "extra": 12345,
- "quantity": 2,
- "notes": "Some notes to apply to the extra's reservation",
- "price-per-unit": 10,
- "apply-to-booking": true
}
{- "data": {
- "type": "bookings",
- "id": 1000000,
- "attributes": {
- "ref": 1001,
- "property-id": 6680,
- "status": 4,
- "status-description": "Instant Confirmed",
- "lead-guest": {
- "customer-id": 1234,
- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": 123456789,
- "email": "jane@example.com",
- "address": {
- "street": "123 Maple Lane",
- "suburb": null,
- "city": "Wellington",
- "postcode": 1234,
- "country": 108
}, - "newsletter": false,
- "vip": false,
- "memberships": null
}, - "priced-for": {
- "id": "account",
- "type": "account"
}, - "balance": 1000,
- "total-cost": 5000,
- "payments-amount": 2500,
- "invoiced-amount": 1500,
- "invoices": {
- "has-invoices": true,
- "invoiced-amount": 1500,
- "total-amount": 1500
}, - "booked": "2019-12-20 00:18:15 (NZT)",
- "notes": {
- "base": "These are my base notes\nMisc info can appear here. It's a free text field.\n",
- "external": "I'm arriving early, is it possible to check in before\nthe specified time?\n",
- "external2": "Are we able to get free chocolates on our pillows?\nOnly if they're free though.\n"
}, - "eta": "2pm",
- "external-payment-ref": null,
- "order-ref": "NEWVOUCHER12345",
- "sell-currency": "NZD",
- "last-updated": "2019-12-20 00:18:15 (NZT)",
- "last-change-id": 12345,
- "has-extras": true,
- "total-nights": 12,
- "checkin": "2020-02-01T14:00:00.000Z",
- "checkout": "2020-02-12T10:00:00.000Z",
- "never-apploy-credit-card-fee": false,
- "extras": [
- {
- "id": 123456,
- "extra-id": 1234567,
- "title": "Newspaper",
- "cost": 10
}
], - "rooms": [
- {
- "id": 123456789,
- "name": "Room 1",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 0,
- "infants": 0
}, - "rate": 550,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456789,
- "unit": 123456,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}, - {
- "id": 123456790,
- "name": "Room 2",
- "room-type": 20352,
- "rate-type": 74182,
- "pax": {
- "adults": 2,
- "children": 1,
- "infants": 0
}, - "rate": 650,
- "datetime-in": "2020-03-20 14:00:00 (NZT)",
- "datetime-out": "2020-03-22 10:00:00 (NZT)",
- "notes": "Some notes and comments\n",
- "eta": "2pm",
- "vehicle-registration": "ABC123",
- "extras": [ ],
- "checked-in-out": 0,
- "units": [
- {
- "id": 123456791,
- "unit": 123457,
- "key-code": false,
- "unit-type": {
- "id": 12345,
- "name": "King Type",
- "order": 2
}
}
]
}
]
}
}
}
Remove an extra from a room's / booking.
booking_id required | int Example: 12345 The ID of the booking. Note: This isn't the 4-5 digit booking reference, this is the unique ID. |
extra_reservation_id required | int Example: 12345 The ID of the extra reservation. |
Successful, no content returned.
Unauthorized Access
Not Found
Method Not Allowed
Sandbox
Production
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
A Room Type is a collection of one or more Units in iBex. Typically the units represent the physical plots/rooms in the property, with the Room Type used for marketing & sales.
For Example: A property may have 12 specific units, named Unit1 through to Unit12. However they're all sold together under the room type "Single Room" which has a quantity of 12.
When booking a room type, iBex automatically assigns the booking to an available unit.
It's possible for two or more units to be mapped together to the same Room Type. This is known as a Virtual Room. When the room type is booked, both/all units involved are mapped out. This allows some units to be sold in a variety of different combinations.
Fetch a paginated list of room types. Can optionally include phtotos, rates & units.
property_id required | int Example: 12345 The ID of the property. |
include | string Enum: "photos" "rates" "units" Example: include=photos Include additional attributes with the main request. This alters the request. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Room type Objects
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "room-types",
- "id": 20480,
- "attributes": {
- "name": "singlebed",
- "marketing-name": "Single Bed Room",
- "notes": {
- "basic": "Contains only a single bed (with a pull out couch). Can fit up to 3 people.",
- "description": "A single room, with a pull out bed for additional guests. Can only\nhold up to 3 people.\n",
- "bedding-configuration": "Bed + Rollaway bed",
- "room-inclusions": "Wifi / Minibar"
}, - "facilities": {
- "1": true,
- "2": false,
- "3": true,
- "4": false,
- "5": true,
- "6": true,
- "7": false,
- "8": false,
- "9": false
}, - "twin-configurable": true,
- "show-unavailable": true,
- "max-pax": 3,
- "enabled": true,
- "created": "2012-08-23 00:00:00",
- "last-updated": "2017-07-09 20:24:00",
- "infants-take-availability": false,
- "after-hours-cutoff": null,
- "is-unit-based": true,
- "part-day": false,
- "rack-rate": 100,
- "allocation": 7
}
}
], - "meta": {
- "pagination": {
- "total": 6,
- "count": 1,
- "per_page": 1,
- "current_page": 1,
- "total_pages": 6
}
}, - "links": {
- "self": "/properties/{property_id}/room-types?page=1",
- "first": "/properties/{property_id}/room-types?page=1",
- "next": "/properties/{property_id}/room-types?page=2",
- "last": "/properties/{property_id}/room-types?page=6"
}
}
Load a single room type
room_type_id required | int Example: 1234 |
Returns a single room type object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "room-types",
- "id": 20480,
- "attributes": {
- "name": "singlebed",
- "marketing-name": "Single Bed Room",
- "notes": {
- "basic": "Contains only a single bed (with a pull out couch). Can fit up to 3 people.",
- "description": "A single room, with a pull out bed for additional guests. Can only\nhold up to 3 people.\n",
- "bedding-configuration": "Bed + Rollaway bed",
- "room-inclusions": "Wifi / Minibar"
}, - "facilities": {
- "1": true,
- "2": false,
- "3": true,
- "4": false,
- "5": true,
- "6": true,
- "7": false,
- "8": false,
- "9": false
}, - "twin-configurable": true,
- "show-unavailable": true,
- "max-pax": 3,
- "enabled": true,
- "created": "2012-08-23 00:00:00",
- "last-updated": "2017-07-09 20:24:00",
- "infants-take-availability": false,
- "after-hours-cutoff": null,
- "is-unit-based": true,
- "part-day": false,
- "rack-rate": 100,
- "allocation": 7
}
}
}
Load a single room type's photos
room_type_id required | int Example: 1234 |
Returns a collection of photos
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "photos",
- "id": "2e7c3e0760ea99315360b941399f118e",
- "attributes": {
- "description": "A cup of coffee",
- "title": null,
- "use": null,
- "enabled": true,
- "property": null,
- "room-type": null,
- "rate": null,
- "extras": null,
- "dimensions": {
- "height": null,
- "width": null
},
}
}
], - "meta": {
- "pagination": {
- "total": 6,
- "count": 1,
- "per_page": 1,
- "current_page": 1,
- "total_pages": 6
}
}, - "links": {
- "self": "/properties/{property_id}/room-types/photos?page=1",
- "first": "/properties/{property_id}/room-types/photos?page=1",
- "next": "/properties/{property_id}/room-types/photos?page=2",
- "last": "/properties/{property_id}/room-types/photos?page=6"
}
}
Load a single room type's rates
room_type_id required | int Example: 1234 |
Returns a collection of rates
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "rates",
- "id": 88590,
- "attributes": {
- "name": "holidayspecial",
- "marketing-name": "Holiday Special",
- "notes": {
- "base": "Some private notes",
- "description": null
}, - "minimum-nights-stay": [ ],
- "max-nights-stay": null,
- "min-pax": 1,
- "base-pax": 2,
- "additional-pax": 4,
- "is-pax-rate": false,
- "valid-for": {
- "adults": true,
- "children": true,
- "infants": true,
- "staff-only": false
}, - "lead-time-days": null,
- "expiry-time-days": null,
- "charge-method": "Month",
- "rates": {
- "child": null,
- "infant": null
}, - "enabled": true
}
}
], - "meta": {
- "pagination": {
- "total": 6,
- "count": 1,
- "per_page": 1,
- "current_page": 1,
- "total_pages": 6
}
}, - "links": {
- "self": "/properties/{property_id}/room-types/{room_type_id}/rates?page=1",
- "first": "/properties/{property_id}/room-types/{room_type_id}/rates?page=1",
- "next": "/properties/{property_id}/room-types/{room_type_id}/rates?page=2",
- "last": "/properties/{property_id}/room-types/{room_type_id}/rates?page=6"
}
}
Load a single room type's units
room_type_id required | int Example: 1234 |
Returns a collection of units
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "units",
- "id": 25373,
- "attributes": {
- "name": "singunit03",
- "long-name": "Single Unit 3",
- "max-pax": 3,
- "notes": "Solo, no adjoining doors",
- "owner-property-id": 6680,
- "hidden": false,
- "enabled": true
}
}
], - "meta": {
- "pagination": {
- "total": 6,
- "count": 1,
- "per_page": 1,
- "current_page": 1,
- "total_pages": 6
}
}, - "links": {
- "self": "/properties/{property_id}/room-types/{room_type_id}/units?page=1",
- "first": "/properties/{property_id}/room-types/{room_type_id}/units?page=1",
- "next": "/properties/{property_id}/room-types/{room_type_id}/units?page=2",
- "last": "/properties/{property_id}/room-types/{room_type_id}/units?page=6"
}
}
Fetch a paginated list of room types. Can optionally include phtotos, rates & units.
property_id required | int Example: 12345 The ID of the property. |
room-types required | Array of integers Example: room-types=1234,5378 A list of room types to look up availability for |
from required | string <date> Example: from=2020-10-01 A start date to look at prices from. There are some restrictions to the date ranges, including:
|
to required | string <date> Example: to=2020-10-31 A end date to look at prices until. |
part-day | boolean Show more detail about part-day room types. If set, |
from_time | string <time> Only applicable if |
to_time | string <time> Only applicable if |
Returns a selection of availability
Unauthorized Access
Sandbox
Production
{- "data": {
- "rooms-available": {
- "20480": [
- 7,
- 7,
- 7
]
}, - "sell-mode": {
- "20480": [
- {
- "mode": 2,
- "description": "Instant Confirmation",
- "detail": {
- "reached-request-threshold": false,
- "reached-request-lead-time": false
}
}, - {
- "mode": 2,
- "description": "Instant Confirmation",
- "detail": {
- "reached-request-threshold": false,
- "reached-request-lead-time": false
}
}, - {
- "mode": 2,
- "description": "Instant Confirmation",
- "detail": {
- "reached-request-threshold": false,
- "reached-request-lead-time": false
}
}
]
}, - "dates": [
- "2020-03-01",
- "2020-03-02",
- "2020-03-03"
]
}
}
Rates (or Rate Types) are a collection of marketing information wrapped around some prices. Together with Room Types, Rates create a product that can be sold.
In iBex we distinguish the difference between a Rate (an item with a name, photos, descriptions etc...) and the pricing for that rate.
Fetch a paginated list of rates.
property_id required | int Example: 12345 The ID of the property. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of rate objects
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "rates",
- "id": 88590,
- "attributes": {
- "name": "holidayspecial",
- "marketing-name": "Holiday Special",
- "notes": {
- "base": "Some private notes",
- "description": null
}, - "minimum-nights-stay": [ ],
- "max-nights-stay": null,
- "min-pax": 1,
- "base-pax": 2,
- "additional-pax": 4,
- "is-pax-rate": false,
- "valid-for": {
- "adults": true,
- "children": true,
- "infants": true,
- "staff-only": false
}, - "lead-time-days": null,
- "expiry-time-days": null,
- "charge-method": "Month",
- "rates": {
- "child": null,
- "infant": null
}, - "enabled": true
}
}
], - "meta": {
- "pagination": {
- "total": 6,
- "count": 1,
- "per_page": 1,
- "current_page": 1,
- "total_pages": 6
}
}, - "links": {
- "self": "/properties/{property_id}/rates?page=1",
- "first": "/properties/{property_id}/rates?page=1",
- "next": "/properties/{property_id}/rates?page=2",
- "last": "/properties/{property_id}/rates?page=6"
}
}
Load a single rate type
rate_id required | int Example: 1234 |
Returns a single rate type object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "rates",
- "id": 88590,
- "attributes": {
- "name": "holidayspecial",
- "marketing-name": "Holiday Special",
- "notes": {
- "base": "Some private notes",
- "description": null
}, - "minimum-nights-stay": [ ],
- "max-nights-stay": null,
- "min-pax": 1,
- "base-pax": 2,
- "additional-pax": 4,
- "is-pax-rate": false,
- "valid-for": {
- "adults": true,
- "children": true,
- "infants": true,
- "staff-only": false
}, - "lead-time-days": null,
- "expiry-time-days": null,
- "charge-method": "Month",
- "rates": {
- "child": null,
- "infant": null
}, - "enabled": true
}
}
}
Fetch the prices for multiple rates at a time
rates required | Array of integers Example: rates=123,456 One or more rate type IDs to fetch prices for |
from required | string <date> Example: from=2020-10-01 ISO-8601 (YYYY-MM-DD) Date of stay checkin, the date from must be no less than 7 days into the past, and no more than 3 years into the future. |
to required | string <date> Example: to=2020-10-31 ISO-8601 (YYYY-MM-DD) Date of stay checkout, the date to must be after the date from and must be no more than 1 year from the date from. If the date to is greater than a year the system will automatically make this a year from the provided date from value |
childAndInfant | boolean Default: true Example: childAndInfant=false True by default, will include child & infant rates where relevant. |
Returns a selection of prices
Bad Request. Failed validation / could not be processed.
Unauthorized Access
Not Found
Sandbox
Production
{- "prices": {
- "39925": [
- {
- "base-pax": 1,
- "date": "2020-03-01",
- "min-stays": {
- "2": {
- "has-child-rate": true,
- "has-infant-rate": false,
- "base-price": 150,
- "adults-prices": {
- "1": 150,
- "2": 160,
- "3": 170,
- "4": 180,
- "5": 190
}, - "children-prices": {
- "1": 27,
- "2": 55,
- "3": 82,
- "4": 109,
- "5": 137,
- "6": 164,
- "7": 191,
- "8": 219,
- "9": 246,
- "10": 273,
- "11": 301,
- "12": 328,
- "13": 355,
- "14": 383,
- "15": 410,
- "16": 438,
- "17": 465,
- "18": 492,
- "19": 520,
- "20": 547,
- "21": 574
}, - "infants-prices": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0
}
}
}
}, - {
- "base-pax": 1,
- "date": "2020-03-02",
- "min-stays": {
- "2": {
- "has-child-rate": true,
- "has-infant-rate": false,
- "base-price": 150,
- "adults-prices": {
- "1": 150,
- "2": 160,
- "3": 170,
- "4": 180,
- "5": 190
}, - "children-prices": {
- "1": 27,
- "2": 55,
- "3": 82,
- "4": 109,
- "5": 137,
- "6": 164,
- "7": 191,
- "8": 219,
- "9": 246,
- "10": 273,
- "11": 301,
- "12": 328,
- "13": 355,
- "14": 383,
- "15": 410,
- "16": 438,
- "17": 465,
- "18": 492,
- "19": 520,
- "20": 547,
- "21": 574
}, - "infants-prices": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0
}
}
}
}, - {
- "base-pax": 1,
- "date": "2020-03-03",
- "min-stays": {
- "2": {
- "has-child-rate": true,
- "has-infant-rate": false,
- "base-price": 150,
- "adults-prices": {
- "1": 150,
- "2": 160,
- "3": 170,
- "4": 180,
- "5": 190
}, - "children-prices": {
- "1": 27,
- "2": 55,
- "3": 82,
- "4": 109,
- "5": 137,
- "6": 164,
- "7": 191,
- "8": 219,
- "9": 246,
- "10": 273,
- "11": 301,
- "12": 328,
- "13": 355,
- "14": 383,
- "15": 410,
- "16": 438,
- "17": 465,
- "18": 492,
- "19": 520,
- "20": 547,
- "21": 574
}, - "infants-prices": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0
}
}
}
}, - {
- "base-pax": 1,
- "date": "2020-03-04",
- "min-stays": {
- "2": {
- "has-child-rate": true,
- "has-infant-rate": false,
- "base-price": 150,
- "adults-prices": {
- "1": 150,
- "2": 160,
- "3": 170,
- "4": 180,
- "5": 190
}, - "children-prices": {
- "1": 27,
- "2": 55,
- "3": 82,
- "4": 109,
- "5": 137,
- "6": 164,
- "7": 191,
- "8": 219,
- "9": 246,
- "10": 273,
- "11": 301,
- "12": 328,
- "13": 355,
- "14": 383,
- "15": 410,
- "16": 438,
- "17": 465,
- "18": 492,
- "19": 520,
- "20": 547,
- "21": 574
}, - "infants-prices": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0
}
}
}
}
]
}, - "dates": [
- "2020-03-01",
- "2020-03-02",
- "2020-03-03",
- "2020-03-04",
- "2020-03-05"
]
}
Update the prices for the specific rate for the specific date range.
Note: Setting a price to 0
will set it to free.
property_id required | int Example: 12345 The ID of the property. |
rate_id required | int Example: 1234 |
prices | Array of objects <= 10 items |
Returns the completed prices
Unauthorized Access
Not Found
Sandbox
Production
{- "prices": [
- {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "daysOfWeek": [
- 2,
- 3,
- 4
], - "minNightStay": 5,
- "basePrice": 55,
- "additionalPersonPrice": 10,
- "fixedBasePrice": 120,
- "fixedAdditionalPersonPrice": 15
}
]
}
[- {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "minNightStay": 1,
- "basePrice": 100,
- "additionalPersonPrice": 12.5,
- "daysOfWeek": [ ],
- "success": true
}, - {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "minNightStay": 2,
- "basePrice": 75,
- "additionalPersonPrice": 25,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "success": true
}
]
Remove prices for the specific rate type & dates. This will make them unbookable.
property_id required | int Example: 12345 The ID of the property. |
rate_id required | int Example: 1234 |
prices | Array of objects <= 10 items |
Returns the completed prices
Unauthorized Access
Not Found
Sandbox
Production
{- "prices": [
- {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "daysOfWeek": [
- 2,
- 3,
- 4
], - "minNightStay": 5
}
]
}
[- {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "minNightStay": 1,
- "daysOfWeek": [ ],
- "success": true
}, - {
- "from": "2020-03-02T00:00:00.000Z",
- "to": "2020-03-10T00:00:00.000Z",
- "minNightStay": 2,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "success": true
}
]
Sales Channels / Agents / Companies all extend from the same base structure, and can typically be used interchangeable in places where an agentID is required (such as making a booking).
The differences between the three are in how they're used.
Sales Channel (Agent that's Channel Based)
Agents
Companies
Fetch a paginated list of agents/sales channels. (This is an alias of List Channels
).
agent-only | string Nullable Value: "true" Example: agent-only=true If |
channel-only | string Nullable Value: "true" Example: channel-only=true If |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Agents/Sales Channels
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "agents",
- "id": "merlinhotel",
- "attributes": {
- "name": "Agent Name",
- "note": "Some notes about the agent",
- "userCode": "ABC123",
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": "50% deposit is required at time of booking, rest of payment on checkin.",
- "cancellation": "Cancellation fee of 10% or 1 night's stay (whichever is higher) for any cancellations less than 30 days away."
}, - "rules": {
- "displayLogo": true,
- "allowedMultiBookingInvoices": true,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Main",
- "rateModifier": 1,
- "extraModifier": 2
}, - "invoices": {
- "rule": {
- "daysOffset": 30,
- "rule_code": 0,
- "description": "Invoice due 30 day of following month from invoice date"
}, - "commission": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 1,
- "description": "Payment or credit via invoice"
}, - "allowMultiBookingInvoice": true,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 1,
- "code": "ABC1234",
- "description": "Validation code required"
}
},
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/agents?page=1",
- "first": "/agents?page=1",
- "next": "/agents?page=2",
- "last": "/agents?page=5"
}
}
Fetch a single agent based on the agent ID
agent_id required | string Example: greenhouse |
include | string Value: "sellingGroup" |
Returns a single Agent Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "agents",
- "id": "merlinhotel",
- "attributes": {
- "name": "Agent Name",
- "note": "Some notes about the agent",
- "userCode": "ABC123",
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": "50% deposit is required at time of booking, rest of payment on checkin.",
- "cancellation": "Cancellation fee of 10% or 1 night's stay (whichever is higher) for any cancellations less than 30 days away."
}, - "rules": {
- "displayLogo": true,
- "allowedMultiBookingInvoices": true,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Main",
- "rateModifier": 1,
- "extraModifier": 2
}, - "invoices": {
- "rule": {
- "daysOffset": 30,
- "rule_code": 0,
- "description": "Invoice due 30 day of following month from invoice date"
}, - "commission": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 1,
- "description": "Payment or credit via invoice"
}, - "allowMultiBookingInvoice": true,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 1,
- "code": "ABC1234",
- "description": "Validation code required"
}
},
}
}
}
Fetch a paginated list of agents/sales channels. (This is an alias of List Agents
).
agent-only | string Nullable Value: "true" Example: agent-only=true If |
channel-only | string Nullable Value: "true" Example: channel-only=true If |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Agents/Sales Channels
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "channels",
- "id": "bcom",
- "attributes": {
- "name": "Channel Name",
- "note": "Some notes about the channel",
- "userCode": null,
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": null,
- "cancellation": null
}, - "rules": {
- "displayLogo": false,
- "allowedMultiBookingInvoices": false,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Agents",
- "rateModifier": 2,
- "extraModifier": 3
}, - "invoices": {
- "rule": null,
- "commission": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 0,
- "description": "No credit required"
}, - "allowMultiBookingInvoice": true,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 0,
- "code": null,
- "description": "No validation required"
}
}, - "isChannelAgent": true
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/channels?page=1",
- "first": "/channels?page=1",
- "next": "/channels?page=2",
- "last": "/channels?page=5"
}
}
Fetch a single channel based on the channel ID
channel_id required | string Example: bcom |
include | string Value: "sellingGroup" |
Returns a single Channel Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "channels",
- "id": "bcom",
- "attributes": {
- "name": "Channel Name",
- "note": "Some notes about the channel",
- "userCode": null,
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": null,
- "cancellation": null
}, - "rules": {
- "displayLogo": false,
- "allowedMultiBookingInvoices": false,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Agents",
- "rateModifier": 2,
- "extraModifier": 3
}, - "invoices": {
- "rule": null,
- "commission": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 0,
- "description": "No credit required"
}, - "allowMultiBookingInvoice": true,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 0,
- "code": null,
- "description": "No validation required"
}
}, - "isChannelAgent": true
}
}
}
Sales Channels / Agents / Companies all extend from the same base structure, and can typically be used interchangeable in places where an agentID is required (such as making a booking).
The differences between the three are in how they're used.
Sales Channel (Agent that's Channel Based)
Agents
Companies
Fetch a paginated list of companies.
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of Companies
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "companies",
- "id": "marksman",
- "attributes": {
- "name": "Marksman School",
- "note": "Some notes about the company",
- "userCode": "ABC123",
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": null,
- "cancellation": null
}, - "rules": {
- "displayLogo": false,
- "allowedMultiBookingInvoices": false,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Agents",
- "rateModifier": 2,
- "extraModifier": 3
}, - "invoices": {
- "rule": null,
- "discount": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 0,
- "description": "No credit required"
}, - "allowMultiBookingInvoice": false,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 0,
- "code": null,
- "description": "No validation required"
}
},
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/companies?page=1",
- "first": "/companies?page=1",
- "next": "/companies?page=2",
- "last": "/companies?page=5"
}
}
Fetch a single company based on the company ID
channel_id required | string Example: bcom |
include | string Value: "sellingGroup" |
Returns a single company Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "companies",
- "id": "marksman",
- "attributes": {
- "name": "Marksman School",
- "note": "Some notes about the company",
- "userCode": "ABC123",
- "contacts": {
- "account": {
- "contactName": "Jane Smith",
- "email": "smith@example.com"
}, - "general": {
- "contactName": "Sammy Smith",
- "email": "sammy@example.com",
- "phone": "+64 123 456 789",
- "fax": "+64 123 654 789"
}
}, - "addresses": {
- "physical": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}, - "mailing": {
- "street": "123 Maple Bridge Road",
- "suburb": "Kilbirnie",
- "city": "Wellington",
- "postalCode": 6022,
- "country": "New Zealand"
}
}, - "policies": {
- "payment": null,
- "cancellation": null
}, - "rules": {
- "displayLogo": false,
- "allowedMultiBookingInvoices": false,
- "allowExtraSale": false,
- "sellingGroup": {
- "id": 123456,
- "name": "Agents",
- "rateModifier": 2,
- "extraModifier": 3
}, - "invoices": {
- "rule": null,
- "discount": {
- "id": 123456,
- "percentage": "10%",
- "value": 0.1,
- "showOnBookingReceipt": false
}, - "credit": {
- "option": 0,
- "description": "No credit required"
}, - "allowMultiBookingInvoice": false,
- "createAutoInvoice": -1
}, - "validation": {
- "type": 0,
- "code": null,
- "description": "No validation required"
}
},
}
}
}
Customers are also known as Lead Guests in a booking. A customer can be attached to multiple bookings & invoices.
To create a customer there must be a minimum of identifyable information provided. A last name and one other contact field such as address, email or phone number.
If no identifyable information is provided, the customer details will be held against the booking, but they will not appear in the customer list and will not have a customer ID.
Fetch a paginated list of customers.
email required | string Example: email=julie@example.com If searching by any of the search fields, the email must be provided. Otherwise email can be left out. |
last-name | string Example: last-name=Jetson Must be used in conjunction with the email address. |
first-name | string Example: first-name=Julie Must be used in conjunction with the email address. |
phone | string Example: phone=12345789 Must be used in conjunction with the email address. |
mobile | string Example: mobile=123456789 Must be used in conjunction with the email address. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of customers
Bad Request
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "customers",
- "id": 27,
- "attributes": {
- "title": "Mr",
- "first-name": "Walter",
- "last-name": "Jones",
- "gender": "Male",
- "date-of-birth": "1914-02-19",
- "contacts": {
- "email": "walter@example.com",
- "phone": "123456789",
- "mobile": "123456789",
- "fax": "123456789"
}, - "address": {
- "street": "88 Jones Road",
- "suburb": "Jones",
- "city": "Jones Town",
- "postal-code": "1234",
- "country": "New Zealand",
- "country-id": 108
}, - "notes": "Private Notes the customer cannot see",
- "notes-alert": "This customer is in alert",
- "notes-ref1": "Ref 1",
- "notes-ref2": "Ref 2",
- "vehicle-reg": "ABC123456",
- "driver-license": "ABC123456",
- "passport-number": "ABC123456",
- "subscribed-to-newsletter": false,
- "is-vip": true,
- "is-alerted": true,
- "is-private": false,
- "balance": 0,
- "invoice-balance": 0,
- "credit-card-held": null
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/customers?page=1",
- "first": "/customers?page=1",
- "next": "/customers?page=2",
- "last": "/customers?page=5"
}
}
Create a new customer. Please note when creating a new customer you must include their last-name and at least one of the following items [email, phone, mobile]. Some accounts may also have certain requirements for what fields they consider compulsory. Please check in iBex under Account > Booking Fields Config to see which fields could also be required.
title | string Short title of the guest. |
first-name | string First name of the guest. |
last-name | string Family name of the guest. |
phone | string Phone number. |
mobile | string Mobile phone number. |
fax | string Fax number. |
string Contact email address. Reservation confirmation emails will be sent here. | |
address | object |
newsletter | boolean Whether or not this user consents to being contacted for marketing purposes. |
notes-ref | string Notes that are attached to the customer. |
dob | date The date of birth of the guest. |
vehicle-reg | string The vehicle registration plate code of the Vehicle. |
memberships | Array of int Nullable A collection of IDs of any memberships this customer holds. |
Returns the newly created Customer
Bad Request. Failed validation / could not be processed.
Unauthorized Access
Sandbox
Production
{- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": "123-456-789",
- "mobile": "123-456-789",
- "fax": "123-456-789",
- "email": "jane@example.com",
- "address": {
- "street": "123 Hogwarts Street",
- "suburb": "Forbidden Forest",
- "city": "London",
- "post-code": 4022,
- "country": 108
}, - "newsletter": true,
- "notes-ref": "string",
- "dob": "1988-07-07T00:00:00.000Z",
- "vehicle-reg": "WR1111",
- "memberships": [
- null
]
}
{- "data": {
- "type": "customers",
- "id": 27,
- "attributes": {
- "title": "Mr",
- "first-name": "Walter",
- "last-name": "Jones",
- "gender": "Male",
- "date-of-birth": "1914-02-19",
- "contacts": {
- "email": "walter@example.com",
- "phone": "123456789",
- "mobile": "123456789",
- "fax": "123456789"
}, - "address": {
- "street": "88 Jones Road",
- "suburb": "Jones",
- "city": "Jones Town",
- "postal-code": "1234",
- "country": "New Zealand",
- "country-id": 108
}, - "notes": "Private Notes the customer cannot see",
- "notes-alert": "This customer is in alert",
- "notes-ref1": "Ref 1",
- "notes-ref2": "Ref 2",
- "vehicle-reg": "ABC123456",
- "driver-license": "ABC123456",
- "passport-number": "ABC123456",
- "subscribed-to-newsletter": false,
- "is-vip": true,
- "is-alerted": true,
- "is-private": false,
- "balance": 0,
- "invoice-balance": 0,
- "credit-card-held": null
}
}
}
Load a single customer
customer_id required | int Example: 1234 |
Returns a single Customer Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "customers",
- "id": 27,
- "attributes": {
- "title": "Mr",
- "first-name": "Walter",
- "last-name": "Jones",
- "gender": "Male",
- "date-of-birth": "1914-02-19",
- "contacts": {
- "email": "walter@example.com",
- "phone": "123456789",
- "mobile": "123456789",
- "fax": "123456789"
}, - "address": {
- "street": "88 Jones Road",
- "suburb": "Jones",
- "city": "Jones Town",
- "postal-code": "1234",
- "country": "New Zealand",
- "country-id": 108
}, - "notes": "Private Notes the customer cannot see",
- "notes-alert": "This customer is in alert",
- "notes-ref1": "Ref 1",
- "notes-ref2": "Ref 2",
- "vehicle-reg": "ABC123456",
- "driver-license": "ABC123456",
- "passport-number": "ABC123456",
- "subscribed-to-newsletter": false,
- "is-vip": true,
- "is-alerted": true,
- "is-private": false,
- "balance": 0,
- "invoice-balance": 0,
- "credit-card-held": null
}
}
}
Edit an existing customer
customer_id required | int Example: 1234 |
title | string Short title of the guest. |
first-name | string First name of the guest. |
last-name | string Family name of the guest. |
phone | string Phone number. |
mobile | string Mobile phone number. |
fax | string Fax number. |
string Contact email address. Reservation confirmation emails will be sent here. | |
address | object |
newsletter | boolean Whether or not this user consents to being contacted for marketing purposes. |
notes-ref | string Notes that are attached to the customer. |
dob | date The date of birth of the guest. |
vehicle-reg | string The vehicle registration plate code of the Vehicle. |
memberships | Array of int Nullable A collection of IDs of any memberships this customer holds. |
Returns the updated Customer
Unauthorized Access
Not Found
Sandbox
Production
{- "title": "Mrs",
- "first-name": "Jane",
- "last-name": "Jetson",
- "phone": "123-456-789",
- "mobile": "123-456-789",
- "fax": "123-456-789",
- "email": "jane@example.com",
- "address": {
- "street": "123 Hogwarts Street",
- "suburb": "Forbidden Forest",
- "city": "London",
- "post-code": 4022,
- "country": 108
}, - "newsletter": true,
- "notes-ref": "string",
- "dob": "1988-07-07T00:00:00.000Z",
- "vehicle-reg": "WR1111",
- "memberships": [
- null
]
}
{- "data": {
- "type": "customers",
- "id": 27,
- "attributes": {
- "title": "Mr",
- "first-name": "Walter",
- "last-name": "Jones",
- "gender": "Male",
- "date-of-birth": "1914-02-19",
- "contacts": {
- "email": "walter@example.com",
- "phone": "123456789",
- "mobile": "123456789",
- "fax": "123456789"
}, - "address": {
- "street": "88 Jones Road",
- "suburb": "Jones",
- "city": "Jones Town",
- "postal-code": "1234",
- "country": "New Zealand",
- "country-id": 108
}, - "notes": "Private Notes the customer cannot see",
- "notes-alert": "This customer is in alert",
- "notes-ref1": "Ref 1",
- "notes-ref2": "Ref 2",
- "vehicle-reg": "ABC123456",
- "driver-license": "ABC123456",
- "passport-number": "ABC123456",
- "subscribed-to-newsletter": false,
- "is-vip": true,
- "is-alerted": true,
- "is-private": false,
- "balance": 0,
- "invoice-balance": 0,
- "credit-card-held": null
}
}
}
An extra is some additional item to a booking that's not the room reservation. It can be a physical item such as a newspaper, or a fee such as a credit card fee.
Extras may be value based (such as $50
per person) or percentage based (10%
of the room reservation's value).
Extras may be attached to either the booking directly, or to a specific room reservation.
Fetch a paginated list of extras. Can optionally include custom fields & category information.
include | string Enum: "categories" "customFields" "photos" Example: include=categories,photos Expand the response with category, photo or custom field information. Comma deliminated. |
status | string Enum: "active" "inactive" "all" Example: status=active Show extras based on it's status. |
reporting-group | int Example: reporting-group=1234 Show extras belonging to the given reporting group Id. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of extras
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "extras",
- "id": 36,
- "attributes": {
- "valid-for-adults": true,
- "valid-for-children": true,
- "valid-for-infants": false,
- "name": "breakf",
- "marketing-name": "Breakfast",
- "description": "Morning breakfast",
- "chargeable-to-room": true,
- "chargeable-to-booking": false,
- "max-periods": null,
- "tax-code": null,
- "charge-method": "/ person / day",
- "max-per-booking": null,
- "non-refundable": false,
- "mandatory-front-screen": false,
- "mandatory-all": false,
- "show-unavailable": false,
- "available-with-public-bookings": true,
- "available-for-public-extras-only-sales": true,
- "agent-commissionable": false,
- "prevent-past-bookings": false,
- "cost-of-sale": false,
- "valid-for-properties": [
- 6,
- 7,
- 8,
- 9,
- 10
], - "included-rates": [ ],
- "excluded-rates": [ ],
- "display-order": 100,
- "enabled": true,
- "housekeeping-related": false,
- "commission-type": 0,
- "individual-sale": false
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/extras?page=1",
- "first": "/extras?page=1",
- "next": "/extras?page=1",
- "last": "/extras?page=1"
}
}
Load a single extra
extra_id required | int Example: 1234 |
include | string Enum: "categories" "customFields" "photos" Example: include=categories,photos Expand the response with category, photo or custom field information. Comma deliminated. |
Returns a single extra Object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "extras",
- "id": 36,
- "attributes": {
- "valid-for-adults": true,
- "valid-for-children": true,
- "valid-for-infants": false,
- "name": "breakf",
- "marketing-name": "Breakfast",
- "description": "Morning breakfast",
- "chargeable-to-room": true,
- "chargeable-to-booking": false,
- "max-periods": null,
- "tax-code": null,
- "charge-method": "/ person / day",
- "max-per-booking": null,
- "non-refundable": false,
- "mandatory-front-screen": false,
- "mandatory-all": false,
- "show-unavailable": false,
- "available-with-public-bookings": true,
- "available-for-public-extras-only-sales": true,
- "agent-commissionable": false,
- "prevent-past-bookings": false,
- "cost-of-sale": false,
- "valid-for-properties": [
- 6,
- 7,
- 8,
- 9,
- 10
], - "included-rates": [ ],
- "excluded-rates": [ ],
- "display-order": 100,
- "enabled": true,
- "housekeeping-related": false,
- "commission-type": 0,
- "individual-sale": false
}
}
}
Fetch the prices for multiple extras at a time
extra_id required | Array of integers Example: extra_id=123,456 |
from required | string <date> Example: from=2020-10-01 A start date to look at prices from. There are some restrictions to the date ranges, including:
|
to required | string <date> Example: to=2020-10-31 A end date to look at prices until. |
Returns a selection of prices
Bad Request. Failed validation / could not be processed.
Unauthorized Access
Not Found
Sandbox
Production
{- "prices": {
- "12345": {
- "2020-10-10": 152,
- "2020-10-11": 152,
- "2020-10-12": 152,
- "2020-10-13": 250,
- "2020-10-14": 250,
- "2020-10-15": 250,
- "2020-10-16": 250
}, - "12346": {
- "2020-10-10": 50,
- "2020-10-11": 50,
- "2020-10-12": 50,
- "2020-10-13": 50,
- "2020-10-14": 75,
- "2020-10-15": 75,
- "2020-10-16": 50
}
}, - "dates": [
- "2020-10-10",
- "2020-10-11",
- "2020-10-12",
- "2020-10-13",
- "2020-10-14",
- "2020-10-15",
- "2020-10-16"
]
}
Unit exclusion is some units excluded for sale for a specific date or date range either from just online sales or for all sales. Unit exclusions can be Full exclusions or Web exclusions. A Full Exclusion means that no booking can be made in that unit. A Web Exclusion means that no online booking can be made for that unit but it can still be booked manually (by you).
Fetch a list of exclusions of the given property ID in date range. Date range should not be more than 30 days.
property_id required | int Example: 12345 The ID of the property. |
from required | string Example: from=2020-10-01 This is in the format of YYYY-MM-DD cannot be more than 30 days before the date to. |
to required | string Example: to=2020-10-30 This is in the format of YYYY-MM-DD cannot be more than 30 dates after the date from. |
unit_ids | array Example: unit_ids=1234,5678,9012 By default the API will return all unit exclusions - if this is included only these specific unit ids will be queried. |
Returns a collection of unit exclusions
Validation Error
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "unit_exclusion",
- "id": 1234567,
- "attritubes": {
- "unit": {
- "id": 1234567
}, - "exclusion": [
- {
- "id": 42624,
- "type": "web",
- "from": "2020-09-30 10:00",
- "to": "2020-10-02 10:00",
- "comment": "This unit has been excluded."
}
]
}
}
]
}
A basic list of visitors who have access to gates within gate control. Gate Control is an additional iBex feature and if not available, will return an authorised message.
Return a list of active visitors & cards/pins for the property
property_id required | int Example: 12345 The ID of the property. |
only_checked_in | boolean Default: true Example: only_checked_in=false If true, will return only the visitors who have checked in via a booking. Otherwise will return the next three days worth of visitors, which can be filtered based on arrival field. |
Returns the visitor objects
Unauthorized Access
Not Found
Sandbox
Production
{- "data": [
- {
- "type": "gate-visitor",
- "id": 10,
- "attributes": {
- "booking-ref": 1234,
- "card-number": "3/0/2565",
- "check-in": "2020-02-20 12:07:00",
- "check-out": null,
- "departure": "2020-02-21 09:00:00",
- "arrival": "2020-02-20 12:13:00",
- "number-is-pin": false,
- "visitor": {
- "first-name": "Jane",
- "last-name": "Jetson"
}, - "unit-name": "un01"
}
}
]
}
Properties are attached to a Country, Region & Location/Sub-Region.
Countries are pre-defined in iBex, while Regions & Sub-Regions can be defined by the operator themselves.
Returns a list of Country items
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of extras
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "countries,",
- "id": "1039,",
- "attributes": {
- "name": "Afghanistan,",
- "code": "AFG,",
- "shortCode": "af,",
- "isoName": "Afghanistan"
}
}, - {
- "type": "countries,",
- "id": "700,",
- "attributes": {
- "name": "Aland Islands,",
- "code": "ALA,",
- "shortCode": "ax,",
- "isoName": "Åland Islands"
}
}
], - "meta": {
- "pagination": {
- "total": 2,
- "count": 20,
- "per_page": 2,
- "current_page": 1,
- "total_pages": 3
}
}, - "links": {
- "self": "/countries/{country_id}/regions?page=1",
- "first": "/countries/{country_id}/regions?page=1",
- "next": "/countries/{country_id}/regions?page=2",
- "last": "/countries/{country_id}/regions?page=3"
}
}
Load a single country
country_id required | int Example: 1234 |
Returns a single country if found.
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "countries",
- "id": 709,
- "attributes": {
- "name": "Bahamas",
- "display-weight": 1,
- "iso": {
- "code": "BHS",
- "short-code": "bs",
- "name": "Bahamas (the)"
}
}
}
}
Returns a list of Region items for the Country
Returns a collection of regions
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "country-regions",
- "id": 55,
- "attributes": {
- "name": "Bay of Islands",
- "display-order": 2
}
}, - {
- "type": "country-regions",
- "id": 136,
- "attributes": {
- "name": "Tararua",
- "display-order": 1
}
}
], - "meta": {
- "pagination": {
- "total": 2,
- "count": 20,
- "per_page": 2,
- "current_page": 1,
- "total_pages": 3
}
}, - "links": {
- "self": "/countries/{country_id}/regions?page=1",
- "first": "/countries/{country_id}/regions?page=1",
- "next": "/countries/{country_id}/regions?page=2",
- "last": "/countries/{country_id}/regions?page=3"
}
}
Returns a list of Sub-Region items for the Region
Returns a collection of sub-regions
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "country-sub-regions",
- "id": 144,
- "attributes": {
- "name": "Whangamata",
- "display-order": 2
}
}, - {
- "type": "country-sub-regions",
- "id": 145,
- "attributes": {
- "name": "Whitianga",
- "display-order": 1
}
}
], - "meta": {
- "pagination": {
- "total": 2,
- "count": 20,
- "per_page": 2,
- "current_page": 1,
- "total_pages": 3
}
}, - "links": {
- "self": "/countries/{country_id}/regions/{region_id}/sub-regions?page=1",
- "first": "/countries/{country_id}/regions/{region_id}/sub-regions?page=1",
- "next": "/countries/{country_id}/regions/{region_id}/sub-regions?page=2",
- "last": "/countries/{country_id}/regions/{region_id}/sub-regions?page=3"
}
}
The memberships system allows a Customer to hold a special type of status that adds discounts to bookings when redeemed. A member is typically an extension of a Customer record.
Each type of membership can have rules about redemption - it might require some validation or authentication.
When purchasing, renewing or redeeming a membership, a booking is used/created, with an extra representing the action taking place. These are known as membership extras and should only be used for their specific membership.
Fetch a paginated list of membership types.
A membership type is also just known as a membership or membership category. It's a specific way a customer can get discounts. An account can have multiple membership systems, and a customer may be a member of any of them.
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of membership types
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "memberships",
- "id": "163",
- "attributes": {
- "name": "VIP Membership",
- "description": "The VIP membership entitles you to 12.5% discount on your accommodation.",
- "created-date": "2020-03-01 21:23:14",
- "max-discount": 150,
- "validation": {
- "primary": 1,
- "primary-title": "Member Number",
- "secondary": 1,
- "secondary-title": "Last Name"
}, - "redemption-extra-id": 29128,
- "purchase-extras": [
- {
- "id": 29127,
- "title": "Member VIP Card"
}
], - "renewal-extras": [
- {
- "id": 39356,
- "title": "Membership Renew"
}
]
}
}
], - "meta": {
- "pagination": {
- "total": 1,
- "count": 1,
- "per_page": 20,
- "current_page": 1,
- "total_pages": 1
}
}, - "links": {
- "self": "/memberships?page=1",
- "first": "/memberships?page=1",
- "last": "/memberships?page=1"
}
}
Load a single membership type.
membership_type_id | int Example: 1234 The ID of the membership type |
Returns a collection of membership types
Unauthorized Access
Sandbox
Production
{- "data": {
- "type": "memberships",
- "id": "163",
- "attributes": {
- "name": "VIP Membership",
- "description": "The VIP membership entitles you to 12.5% discount on your accommodation.",
- "created-date": "2020-03-01 21:23:14",
- "max-discount": 150,
- "validation": {
- "primary": 1,
- "primary-title": "Member Number",
- "secondary": 1,
- "secondary-title": "Last Name"
}, - "redemption-extra-id": 29128,
- "purchase-extras": [
- {
- "id": 29127,
- "title": "Member VIP Card"
}
], - "renewal-extras": [
- {
- "id": 39356,
- "title": "Membership Renew"
}
]
}
}
}
Validate a specific membership based on the provided credentials. If successful the memeber & customer IDs will both be returned.
membership_type_id | int Example: 1234 The ID of the membership type |
primary-validator required | string The value of the primary validator. The actual required value depends on the |
secondary-validator | string The value of the secondary validator. The actual required value depends on the |
Returns the validation response - valid or invalid
Unauthorized Access
Validation Error
Sandbox
Production
{- "primary-validator": 123456,
- "secondary-validator": "jane@example.com"
}
{- "valid": true,
- "member-id": 1234,
- "customer-id": 5678
}
Fetch a paginated list of members.
A member is a customer who blongs to a specific membership type.
include | string Value: "customers" Example: include=customers Expand the response with customer entry for each member. |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of members
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "members",
- "id": "6909",
- "attributes": {
- "external-id": null,
- "name": "Jane Jetson",
- "number": "5002",
- "issue-date": "2015-08-12",
- "expire-date": "2022-08-13",
- "last-renewal-date": "2020-01-13",
- "status": {
- "code": 1,
- "description": "Active"
}, - "contacts": {
- "phone": 123456789,
- "email": "jane@example.com"
}, - "discount": 0.125,
- "max-amount": 150,
- "is-manually-numbered": false
}
}
], - "meta": {
- "pagination": {
- "total": 1,
- "count": 1,
- "per_page": 20,
- "current_page": 1,
- "total_pages": 1
}
}, - "links": {
- "self": "/memberships/{membership_type_id}/members?page=1",
- "first": "/memberships/{membership_type_id}/members?page=1",
- "last": "/memberships/{membership_type_id}/members?page=1"
}
}
Payments are records of financial transactions. They are polymorphic and associated with either a customer, a booking or a invoice.
This is handled by the invoice-id
and booking-id
fields.
If invoice-id is not null
: The payment belongs to the invoiceIf booking-id is not null
and invoice-id is null
: The payment belongs to the bookingIf booking-id is null
and invoice-id is null
: The payment belongs to the customerFetch a paginated list of payments.
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of payments
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "payments",
- "id": 123456789,
- "attributes": {
- "id": 123456789,
- "amount": 52.55,
- "currency": "NZD",
- "reference": "Paid in person",
- "hold": false,
- "booking-id": 123456789,
- "invoice-id": 123456,
- "method": 123456,
- "pay-date": "2020-02-24T00:00:00.000Z",
- "pay-time": "15:30"
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/payments?page=1",
- "first": "/payments?page=1",
- "next": "/payments?page=2",
- "last": "/payments?page=5"
}
}
Add a payment. Currently only payments against bookings are supported.
amount required | float The amount that was taken as a deposit/payment. |
booking-id required | int The booking to add a payment against |
reference | string A description of the amount. For example, "Booking deposit". |
hold | boolean Whether this deposit should be marked as "held" - as in a reference but not accepted yet. |
method | string One of the payment methods or blank. |
Returns a single payment object if successful
Unauthorized Access
Not Found
Validation Error
Sandbox
Production
{- "booking-id": null,
- "amount": 50.25,
- "reference": "Payment via Kiosk",
- "hold": false,
- "method": "Cash"
}
{- "data": [
- {
- "type": "payments",
- "id": 123456789,
- "attributes": {
- "amount": 52.55,
- "currency": "NZD",
- "reference": "Paid in person",
- "hold": false,
- "booking-id": 123456789,
- "invoice-id": 123456,
- "method": 123456,
- "pay-date": "2020-02-24T00:00:00.000Z",
- "pay-time": "15:30"
}
}
]
}
Update part of a payment. Only the fields that are changing need to be included, otherwise don't include the key/value.
payment_id required | int Example: 1234 The ID of the payment |
booking-id | int The booking to add a payment against, if changing. |
amount | float The amount that was taken as a deposit/payment, if changing. |
reference | string A description of the amount. For example, "Booking deposit", if changing. |
hold | boolean Whether this deposit should be marked as "held" - as in a reference but not accepted yet, if changing. |
method | string One of the payment methods, if changing. |
Returns a single payment object if successful
Unauthorized Access
Not Found
Validation Error
Sandbox
Production
{- "booking-id": 123456789,
- "amount": 50.25,
- "reference": "Payment via Kiosk",
- "hold": false,
- "method": "Cash"
}
{- "data": [
- {
- "type": "payments",
- "id": 123456789,
- "attributes": {
- "amount": 52.55,
- "currency": "NZD",
- "reference": "Paid in person",
- "hold": false,
- "booking-id": 123456789,
- "invoice-id": 123456,
- "method": 123456,
- "pay-date": "2020-02-24T00:00:00.000Z",
- "pay-time": "15:30"
}
}
]
}
Delete a payment.
payment_id required | int Example: 1234 The ID of the payment |
Successful, no content returned.
Unauthorized Access
Not Found
Method Not Allowed
Sandbox
Production
{- "errors": [
- {
- "code": "401",
- "title": "Unauthorized"
}
]
}
Get a single payment record by ID
payment_id required | int Example: 1234 The ID of the payment |
Returns a single payment record
Unauthorized Access
Sandbox
Production
{- "data": {
- "type": "payments",
- "id": 123456789,
- "attributes": {
- "id": 123456789,
- "amount": 52.55,
- "currency": "NZD",
- "reference": "Paid in person",
- "hold": false,
- "booking-id": 123456789,
- "invoice-id": 123456,
- "method": 123456,
- "pay-date": "2020-02-24T00:00:00.000Z",
- "pay-time": "15:30"
}
}, - "meta": {
- "pagination": {
- "total": 50,
- "count": 10,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 5
}
}, - "links": {
- "self": "/payments/{payment_id}?page=1",
- "first": "/payments/{payment_id}?page=1",
- "next": "/payments/{payment_id}?page=2",
- "last": "/payments/{payment_id}?page=5"
}
}
Promo Codes are a type of discount code that can be used against bookings. The code itself is tied to an extra, and then that extra can be added to a booking to redeem the relevant discount.
These endpoints allow existing promo codes to be looked up & validated. If validated, the relevant extras are returned which can then be added when making a booking.
Promo codes do not automatically redeem themselves, you must add their associated extra to the booking when creating the booking. It can be redeemed subsequently by calling the Add Extras endpoint for a booking.
This is an additional feature to iBex, if the account does not have access to it these endpoints will return unauthorised.
Fetch a paginated list of promo codes.
include | string Value: "promoExtras" Example: include=promoExtras Include the extra name with the promo code call |
page[number] | int >= 1 Default: 1 Example: page[number]=3 |
page[size] | int [ 1 .. 100 ] Default: 20 Example: page[size]=50 The number of items per page to load. Larger loading will take longer, and it maxes out at 100. |
Returns a collection of promo codes
Unauthorized Access
Sandbox
Production
{- "data": [
- {
- "type": "promo-code",
- "id": 23,
- "attributes": {
- "prompt": "This discount is only for members",
- "description": "Special discount for members",
- "title": "Discount",
- "codes": {
- "abc123": 1234,
- "ABfdfN33": 5555
}, - "enabled": true
}
}
], - "meta": {
- "pagination": {
- "total": 50,
- "count": 2,
- "per_page": 10,
- "current_page": 1,
- "total_pages": 1
}
}, - "links": {
- "self": "/promo-codes?page=1",
- "first": "/promo-codes?page=1",
- "next": "/promo-codes?page=1",
- "last": "/promo-codes?page=1"
}
}
Load a single promo code
promo_code_id required | int Example: 1234 |
Returns a single promo code object if found
Unauthorized Access
Not Found
Sandbox
Production
{- "data": {
- "type": "promo-code",
- "id": 23,
- "attributes": {
- "prompt": "This discount is only for members",
- "description": "Special discount for members",
- "title": "Discount",
- "codes": {
- "abc123": 1234,
- "ABfdfN33": 5555
}, - "enabled": true
}
}
}
Accepts a specific promo code, and then if valid will return the promo code ID & associated extra ID.
promo_code required | string The specific promo code value entered by the guest. |
Returns the validation response - valid or invalid
Unauthorized Access
Sandbox
Production
{- "promo_code": "ABC123"
}
{- "valid": true,
- "promo-id": 1234,
- "extra-id": 5678
}
Loads housekeeping unit status
units required | array <= 50 items Example: units=123,456,789 Comma delimited string of unit ids |
Returns an object with unit ids as the key and status as the value
Bad Request. Failed validation / could not be processed
Unauthorized Access
Not Found
Sandbox
Production
{- "123": "unknown",
- "456": "done",
- "789": "not-done"
}
Loads all housekeeping unit status
Returns an object with unit ids as the key and status as the value
Bad Request. Failed validation / could not be processed
Unauthorized Access
Not Found
Sandbox
Production
{- "123": "unknown",
- "456": "done",
- "789": "not-done"
}
Updates housekeeping unit status given job ids
truefalse required | string Example: true Value of the status to set |
jobs | array Array of job ids |
Bad Request. Failed validation / could not be processed
Unauthorized Access
Not Found
Sandbox
Production
{- "jobs": [
- 22,
- 23
]
}
{- "success": true,
- "http_code": 200,
- "data": [ ]
}
Will generate jobs for the given date
date required | string Example: 2021-03-18 Date that jobs will be generated from (in the form 'YYYY-MM-DD') |
Returns an array of jobs
Unauthorized Access
Not Found
Sandbox
Production
{- "success": true,
- "http_code": 200,
- "data": [
- {
- "id": 1,
- "type": "booking",
- "schedule_id": 1,
- "account_id": 2,
- "booking_id": 2,
- "rule_id": 5,
- "unit_id": 2345,
- "category": "arrival",
- "name": "Arrival",
- "day": "2021-03-16",
- "time": null,
- "done": false,
- "deleted": false,
- "deferred": false,
- "do_not_disturb": false,
- "notes_for_housekeeping": null,
- "notes_from_housekeeping": null,
- "created_at": "2021-03-16 00:00:00",
- "updated_at": "2021-03-16 00:00:00",
- "disabled": false,
- "manual": false,
- "property_id": 132,
- "priority": false
}, - {
- "id": 2,
- "type": "unit",
- "schedule_id": 2,
- "account_id": 3,
- "booking_id": 3,
- "rule_id": 6,
- "unit_id": 2134,
- "category": "departure",
- "name": "Departure",
- "day": "2021-03-19",
- "time": null,
- "done": false,
- "deleted": false,
- "deferred": false,
- "do_not_disturb": false,
- "notes_for_housekeeping": null,
- "notes_from_housekeeping": null,
- "created_at": "2021-03-12 00:00:00",
- "updated_at": "2021-03-12 00:00:00",
- "disabled": false,
- "manual": false,
- "property_id": 132,
- "priority": false
}
]
}
Will generate jobs for the given booking
bookingRef required | int Example: 1234 Booking Reference in iBex of the booking which the jobs will be based on |
Returns an array of jobs
Bad Request. Failed validation / could not be processed
Unauthorized Access
Not Found
Sandbox
Production
{- "success": true,
- "http_code": 200,
- "data": [
- {
- "id": 1,
- "type": "booking",
- "schedule_id": 1,
- "account_id": 2,
- "booking_id": 2,
- "rule_id": 5,
- "unit_id": 2345,
- "category": "arrival",
- "name": "Arrival",
- "day": "2021-03-16",
- "time": null,
- "done": false,
- "deleted": false,
- "deferred": false,
- "do_not_disturb": false,
- "notes_for_housekeeping": null,
- "notes_from_housekeeping": null,
- "created_at": "2021-03-16 00:00:00",
- "updated_at": "2021-03-16 00:00:00",
- "disabled": false,
- "manual": false,
- "property_id": 132,
- "priority": false
}, - {
- "id": 2,
- "type": "unit",
- "schedule_id": 2,
- "account_id": 3,
- "booking_id": 3,
- "rule_id": 6,
- "unit_id": 2134,
- "category": "departure",
- "name": "Departure",
- "day": "2021-03-19",
- "time": null,
- "done": false,
- "deleted": false,
- "deferred": false,
- "do_not_disturb": false,
- "notes_for_housekeeping": null,
- "notes_from_housekeeping": null,
- "created_at": "2021-03-12 00:00:00",
- "updated_at": "2021-03-12 00:00:00",
- "disabled": false,
- "manual": false,
- "property_id": 132,
- "priority": false
}
]
}