ℹ️ Beta Mode |
---|
This API is in beta and may change without notice. |
ℹ️ API Access |
Access to the Checkfront API is not available to Trial users. Please contact our Sales team to purchase API access. |
Checkfront's APIs allow developers to expand and build on the Checkfront Booking Platform.
The Management API allows you to manage your products, bookings, customers, and more. Nearly everything editable in the Booking Management backend can be managed via this API.
This documentation assumes you have some knowledge of web programming and API implementations – if not, please see our list of existing plug-ins and extensions, or contact us for an introduction to a qualified Checkfront developer in your area.
You may want to begin by experimenting using the Developer Console to get a feel for the system, then review Connecting to the API to begin building your application.
This API is built around open standards and secure technologies to streamline development and maintain the integrity of your data. The API is based on REST principles, using resource-oriented URLs and common HTTP features including authentication, HTTP verbs, and HTTP status codes. JSON is returned by all API responses, including errors.
Our API patterns, to aid in predicting our API:
Endpoints are organized around Resources, which are pluralized (e.g.
/bookings
,/bookings/ABCD-251219
,/accounts/1
)GET /<resource>
responds with a list of that resource (optionally filterable). All other endpoints respond with a single resource.GET /<resource>/<identifier>
responds with that resource.POST /<resource>
creates a new resource, and responds with it.PATCH /<resource>/<identifier>
updates a resource, and responds with the updated resource.DELETE /<resource>/<identifier>
disables the resource, or removes it from a list, and responds with the disabled resource.All responses and request bodies must be JSON.
Sample successful list response:
{ "data": [ {"id": 1, <resource properties>}, {"id": 3, <resource properties>} ], "meta": { "timestamp": "2019-01-07T16:21:15.000-06:00", "accountId": 1, "request": { "end": "2018-12-31T23:59:59-06:00", "limit": "10" }, "requestUri": "/api/4.0/bookings?end=2018-12-31T23:59:59-06:00&limit=10", "records": { "count": 10, "total": 134, "limit": 10, "offset": 0, "nextPageUrl": "https://demo.checkfront.com/api/4.0/bookings?end=2018-12-31T23%3A59%3A59-06%3A00&limit=10&offset=10", "prevPageUrl": "" } } }
Date-Time formats: Checkfront API uses ISO8601 format for expressing dates, e.g.
2019-01-10
. For expressing Date-time, the API uses RFC3339 which is a profile of ISO8601.Date-time syntax:
Date-time syntax must be
full-date "T" full-time
.Full-date
is represented asYYYY-mm-dd
. Each temporal item is organized in a decreasing temporal order towards right. Date-time starts with the largest temporal item i.e. year on the left. Consecutive smaller items are placed on the right of the previous item.Time must be represented in a 24 hour clock system in a
HH:mm:ss
format. Timezone information may be optionally provided with a time representation. Adding aZ
after time indicates the time is in UTC. Offsets from UTC are appended to time. To represent negative offsets use-
and for positive offsets use+
. Beginning of a calendar day is represented by00:00:00
.Date and time must be separated by either an upper case
T
or a space character.Some valid examples for representing Date-time are:
2000-12-1 13:01:45 2000-12-1T13:01:45Z 2000-12-1T13:01:45-8:00 2000-12-1 13:01:45-8:00 2000-12-1T13:01:45
Checkfront uses HTTP response codes to indicate the overall success or failure of an API request, in addition to providing an {"error": {"httpCode": 400, "errorCode": "invalid-parameter", "message": "..."}}
response.
HTTP Response Codes
- 200 - success
- 400 - general request error
- 401 - authentication failed (missing or invalid API token)
- 403 - insufficient permission (the requested endpoint requires a permission the current API token lacks)
- 404 - endpoint or resource identifier not found
- 409 - identifier/name conflict
- 429 - rate limited
- 500 - Checkfront error (these are rare)
API throttle limit: We reserve the right to tune the limitations, but they are always set high enough to allow a well-behaving interactive program to do its job.
When the rate limit is exceeded Checkfront will send an HTTP 429 status code. The number of seconds until the throttle is lifted is sent via the “Retry-After” HTTP header, as specified in RFC 2616.
Use of this API is strictly bound by the terms as specified in Checkfront API Terms of Service.
Some endpoints documented here may not be available to you based on your account plan or enabled features.
The Checkfront API supports two authentication strategies to authenticate requests: Token Authentication using API keys and OAuth2. You can choose which strategy to use at the time of registering your application in your Checkfront account.
When adding your application, you will be given a choice between two “authentication types”. The method you choose for your application is largely determined by the intended use and scope of your application, and in certain cases you may choose to add more than one access method to your account.
Token Authentication makes use of a simple static private key and secret pair that can be used for server-to-server communication only. For example, this strategy can be used by an application running on your private web server to create a customer-facing booking page.
You can manage API keys under Manage > Developer in your Checkfront account.
If you are using token authentication, your application will provide you with two keys:
Key Name | Key Description |
---|---|
API Key | Will be used as your HTTP Basic Username |
API Secret | Will be used as your HTTP Basic Password |
When sent together in a request header using HTTP Basic Auth, these allow direct access to API endpoints with an administrative permission level (by default).
Set CURLOPT_USERPWD
if working with cURL libraries, or refer to the documentation on HTTP Basic Authentication relevant to your chosen framework. If building your requests manually, HTTP Basic credentials are base64 encoded in the sequence "username:password" and sent in the request header in the following format:
GET /bookings/AXNH-110220 HTTP/1.1
Authorization: Basic M2JlOTg2NDFmMDc0NWI2ZmU3ZGFjYzJkZjk0N2FkYmMxZGE3MzEyZDo0YzRkNTk4YTVkOTQwZjA4ZmRiNDM1YjY5YWY5ODZjNzBmMjIwNmRk
OAuth 2.0 is the industry-standard protocol for API authorization and authentication. Using this method of authentication can allow your application to act on behalf of individual members of your staff by allowing them to “log in” and grant their specific permission to the app.
This is ideal for any case where you want to allow non-administrative staff to make or change bookings in the system, for example.
To make implementing this protocol easier, you can use a language-specific OAuth client library such as the ones listed here.
Logging in with a Staff Account
To obtain a token that will allow your application to act on behalf of a specific staff account, you will need to follow this flow:
Redirect your staff user to your Authorize Token URL (eg.
https://your-company.checkfront.com/oauth/
) with the following query string parameters set:Query Parameter Description client_id Your application’s Consumer Key
(see your application setup).response_type MUST be set to code
redirect_uri The URI to return your user to after authorization. Upon completion of authorization, the staff user will be sent to the
redirect_uri
specified in the previous step, along with acode
parameter in the query string. The value of thecode
parameter must be exchanged by your application for an access/refresh token pair within 60 seconds.To exchange the code for an access token, make a call to your Access Token URL (eg.
POST https://your-company.checkfront.com/oauth/token/
) with the following POST Body set:Parameter Description client_id Your Consumer Key
as displayed for your application under Manage > Developerclient_secret Your Consumer Secret
as displayed for your application under Manage > Developergrant_type MUST be set to authorization_code
code The authorization code as returned in the client's previous GET request to your page. Store the
access_token
andrefresh_token
returned by the previous call in a secure database along with a field containing the timestamp of most recent update of that token. Your tokens should be refreshed on a regular basis as long as the authorization continues to be used.Your application should store and make use of the following fields from above response:
Field Description access_token See: Access Token refresh_token See: Refresh Token expires_in The time (in seconds) after which the access token will expire.
Using and Maintaining OAuth2 Tokens
While your first authentication will provide a usable access token for authenticating with the API, the access token has a fixed lifetime and must be refreshed in order to maintain access to the API.
See Refresh Token and other details below for information on performing a token refresh.
OAuth2 Reference
Authorization Endpoints
There are two important endpoints used when authenticating using OAuth2, and both are displayed when viewing the application setup on your Checkfront developer page.
The Authorize Token URL is used when redirecting a user to grant permission to use their account. On success, this will return a
code
for you to pass to the below Access Token URL to grant anaccess_token
that you can use to access the API.https://your-company.checkfront.com/oauth/
The Access Token URL is used for granting access tokens from
code
requests, and refreshing existing tokens.https://your-company.checkfront.com/oauth/token/
Consumer Key / Consumer Secret
The Consumer Key and Consumer Secret are generated when setting up your application and can be found on your Checkfront developer page under Manage > Developer. Your Consumer Key and Consumer Secret allow your application to grant and refresh tokens on behalf of your users.
ℹ️ Note Your consumer key and secret should only be sent together when making calls to your Access Token URL. When your application is making calls to endpoints requiring a valid access token, the key/secret pair should not be sent. As with the token pairs, these should be sent as HTTP Basic credentials. However, these can only be sent in this manner to the
/oauth/token/
(code/refresh) endpoint. Your request will be rejected if you attempt to send these to an /api/ endpoint.Access Token
This is used by the API to identify you and allow the application to act on your behalf. When using OAuth2 for your application, an access token is required to be sent with all API calls to non-public endpoints.
Access tokens have a lifetime of 14000 seconds (this will be returned as
expires_in
when new tokens are granted). After this time, they must be refreshed to obtain a new token. Your application should keep track of when this token expires and check if it needs refreshing before attempting a request.When sending your token with an API request, it should be sent as a Bearer Token header in the following format:
Authorization: BEARER f58ef579d0bb5ffb3b5bb0985a85e21a
Refresh Token
After your current access token has expired, this refresh token can be used to create a new access/refresh token pair, which will replace your previously stored access/refresh token pair.
To exchange the refresh token for a new access/refresh token pair, make a request to your Access Token URL (eg.
POST https://your-company.checkfront.com/oauth/token/
) with the following parameters set:Parameter Description client_id Your Consumer Key
as displayed for your application under Manage > Developerclient_secret Your Consumer Secret
as displayed for your application under Manage > Developergrant_type MUST be set to refresh_token
refresh_token The current (active) refresh token for this user. Refresh tokens have a lifetime of 14 days from issue, after which (if allowed to expire) you must generate a new access/refresh token pair to regain application authorization.
The Checkfront API is accessible via a secure authenticated HTTPS connection to our hosted services, and is isolated to your subscription. This requires your application to have the ability to connect to external servers using SSL and one of the authentication strategies provided to your Checkfront account.
To start setting up your application, open your Checkfront account page and use the menu to navigate your browser to Manage > Developer. This page will provide access to a list of your active application clients and webhook notifications configuration under the “Webhooks” tab, and The Developer Console.
Click the "New Application" button in the upper-left corner, and carefully read the terms of service provided.
The developer console provides easy, direct access to the API to aid in development or debugging your API calls. This allows you to interact with the API without setting up an environment, where you can manually perform any of the actions available to the API.
Note that all parameters for both GET and POST requests should be URL encoded in the query string.
The console can be found in your Checkfront Account under Manage > Developer > Console.
“You do not have access to this resource.”
The token pair you attempted to use could not be authorized to use the API. Double check that you are using the correct credentials, and that you are using the correct authentication type.
If you’re looking for help figuring out how to get your application working, or just have something you want to ask about, contact us directly through the support link in your Checkfront account.
To get all bookings made.
GET /api/4.0/bookings
The search for bookings based on a date range.
GET /api/4.0/bookings?startMin=2020-11-11T00:00:00-06:0&endMax=2020-11-12T00:00:00-06:00
Several of the API V4 endpoints support the use of pagination. Pagination allows you to request a subset of the total amount of responses returned by an endpoint in order to improve performance.
For any endpoint that supports pagination, you can set the limit
and/or offset
params to leverage pagination. Some endpoints (such as the bookings endpoint) use pagination by default. Pagination data can be found in the meta of the API response, and will contain the following fields:
limit
: Setting thelimit
param in the request params of your request will limit the number of responses to be less than or equal to the requestedlimit
. It is possible that the endpoint returns less than the requestedlimit
.offset
: Setting theoffset
param in the request params of your request will skip the first X number of responses before beginning to return objects (where X is theoffset
). For example, setting a limit of 10 and an offset of 5 when requesting products would skip the first 5 products, then return the next 10 products.count
: The number of objects returned from the API. The count will always be less than or equal to thelimit
(if the limit is set)total
: The total number of objects that can be returned by the endpointnextPageUrl
: Will only be set if there are additional objects to retrieve via pagination. ThenextPageUrl
is the same as the current request, except itsoffset
is set tooffset
+limit
of the current request. Eg. If you current request had alimit
of 10 and anoffset
of 0, the next page would have alimit
of 10 and anoffset
of 10prevPageUrl
: Will only be set if offset is not 0. Returns the previous "page" of results.
When using pagination, in order to retrieve the entire set of data for an endpoint, you must continue requesting from nextPageUrl
until it is empty. Request:
GET /bookings?limit=2&offset=5
Response:
{
"data": [
{
"id": 6,
"code": "QVDK-030923",
...
},
{
"id": 7,
"code": "LCTN-301023",
...
},
],
"meta": {
"timestamp": "2023-12-05T15:45:03.000-06:00",
"accountId": 1,
"request": {
"start": "2024-09-15T10:00:00-05:00",
"end": "2024-09-16T10:00:00-05:00",
"limit": "2",
"offset": "5"
},
"requestUri": "/api/4.0/bookings?limit=2&offset=5",
"records": {
"count": 2,
"total": 38,
"limit": 2,
"offset": 5,
"nextPageUrl": "https://demo.checkfront.com/api/4.0/bookings?limit=2&offset=7",
"prevPageUrl": "https://demo.checkfront.com/api/4.0/bookings?limit=2&offset=3"
}
}
}
This document describes our change management strategy for public APIs
Your API version controls how our APIs handle your requests. Your API version is dictated by the URL to which you send your requests. For example:
- Send a request to https://yourdomain.checkfront.com/api/4.0/bookings to will receive a response from the Version 4.0 API.
- Send a request to https://yourdomain.checkfront.com/api/4.1/bookings to receive the V4.1 response.
API versions follow the format of majorVersion.minorVersion
. We will make backwards compatible changes within a minor version without incrementing the version number, and backwards-incompatible changes will be introduced in a new minor version increment.
Given a version number MAJOR.MINOR we increment the:
- MAJOR version when we make significant backwards incompatible API changes that affects the entire API structure or standards.
- MINOR version when we make minor backwards incompatible API changes.
The version number is not incremented when we make backwards compatible changes. When a backwards incompatible change is needed, it will be grouped with other backwards incompatible changes and then released under a new minor version.
For example:
- If the current version is 4.0, the backwards incompatible changes will be introduced in 4.1.
- If the current version is 4.9, the backwards incompatible changes will be introduced in 4.10.
Backwards compatible changes will be included without a version increment. When we add backwards compatible changes to a version, we’ll update that version’s changelog with the details of the changes.
We may implement backwards compatible changes within an existing version, rather than creating a new version. We consider the following to be backwards compatible:
- Adding new resources
- Adding new properties to existing resources
- Adding optional request parameters to existing resources
- Adding new webhooks
- Changing the order of properties in existing responses
- Changing human-readable error messages
A backwards incompatible change is any change we make only in a new API version. You must upgrade to the new version for such changes to apply to your integration. Below is an incomplete list of backwards incompatible changes:
- Removing resources
- Removing properties on existing resources
- Removing request parameters
- Changes to existing authentication methods
- Changes to existing response structures
If you use an older API version, you'll need to upgrade to the latest version to use the latest features. When we publish a new version, we will include a migration guide which describes the changes you need to implement to upgrade from the previous version to the latest version.
2024-06-07
[Activities]
- Added parameter
search
as search field to/4.0/activities
endpoint
2024-02-28
[Bookings]
- Added parameter
accountIds
to the/4.0/bookings
endpoint to filter by account - Added parameter
categoryIds
to the/4.0/bookings
endpoint to filter by categories - Added parameter
tagIds
to the/4.0/bookings
endpoint to filter by tags - Added parameter
statuses
to the/4.0/bookings
endpoint to filter by a list of statuses - Added parameter
withMobile
to the/4.0/bookings
endpoint to filter bookings when the source is "mobile" - Deprecated
status
in GET requests; usestatuses
for consistency with response
2024-02-22
[Bookings]
- Added parameter
cfs
as search field to/4.0/bookings
endpoint
2023-05-02
[Products]
- 🚨 Fixed:
product.taxes
no longer includes disabled taxes
2022-07-07
[Products]
- 🚨 Changed:
product.productId
has been renamedproduct.id
to align with conventions
2022-04-25
[Guests]
- 🚨 Changed: all guest fields are now nested like
guest.fields.guest_email
, aligning with configured booking form fields
2021-09-22
[Product Rate Schedules]
- 🚨 Changed: "Rate Schedules" are now called "Custom Rates". The endpoint
/4.0/rate-schedules/
is now/4.0/custom-rates
- 🚨 Changed: Custom Rate type
tiered
changed tomultiDuration
- 🚨 Changed: Custom Rate type
lengthOfStay
changed tosingleDuration
- 🚨 Changed: the responses from
/4.0/products/
will now havecustomRateIds
instead ofrateScheduleIds
2021-07-12
[Bookings]
- 🚨 Changed: all booking fields are now nested like
booking.fields.customer_email
, aligning with configured booking form fields - Added endpoint
/4.0/bookings/x/changeStatus
- Added endpoint
PATCH /4.0/bookings/x
, can changepartnerId
,customerId
,fields
- Added endpoint
/4.0/bookings/x/notes
;/4.0/bookings?with[]=notes
now includes notes
[Customers]
- 🚨 Changed: create/update now expects all fields to be nested like
customer.fields.customer_email
, aligning with the response structure - Added support for updating custom fields
2021-06-25
[Gift Certificates]
- Deprecated
/4.0/gift-certificates/issue
; usePOST /4.0/gift-certificates
(same request/response) - Deprecated
amount
in PATCH/POST requests; usebalance
for consistency with response
[Products]
- 🚨 Changed:
/pricing
'sguestPricing.amount
is now (int cents),productPricing.amount
is now (int cents) - Deprecated
commissionAmount
; usecommissionCents
(int cents) orcommissionPercent
(float '12.5') instead, depending oncommissionType
- Deprecated
depositAmount
; usedepositCents
(int cents) ordepositPercent
(float '12.5') instead, depending ondepositType
- Deprecated
/events
'spricing.priceAdjustment
; usepricing.adjustmentCents
(int cents) orpricing.adjustmentPercent
(float '12.5') instead, depending onpriceAdjustmentType
[Product Rate Schedules]
- Deprecated
adjustmentAmount
; useadjustmentCents
(int cents) oradjustmentPercent
(float '12.5') instead, depending onadjustmentType
[Product Discounts]
- Deprecated
amount
; useamountCents
oramountPercent
(float '12.5') instead, depending onpriceAdjustmentType
[Taxes]
- Deprecated
amount
; useamountCents
(int cents) oramountPercent
(float) instead, depending ontype
[Item Discounts]
- 🚨 Changed:
type
== "percentage" is now "percent" - Deprecated
amount
; useamountCents
(int cents) oramountPercent
(float) instead, depending ontype
[Transactions]
- 🚨 Changed:
amount
is now (int cents)
[Bookings]
- 🚨 Changed:
booking.lineItems
:total
,subTotal
,taxTotal
,inclusiveTaxTotal
: changed from floats to (int cents) - Deprecated
amount
; usetotal
(int cents) - Deprecated
paid
; usepaidTotal
(int cents) - Added
subTotal
,taxTotal
,inclusiveTaxTotal
(int cents)
Accounts allow your staff and partners to access your Checkfront account, using their own private dashboard. Accounts are highly customizable and can have very granular permissions.
There are two types of accounts that can be made via the API -
Staff Accounts: Staff accounts allow your staff to use the system based on the permissions specified by an administrator account. For example, a staff account could have the permission to make changes to inventory items and take payments.
Partner Account: Partner Accounts allow your partners to take bookings on your behalf, without having permission to change your inventory. Commissions can be set up on the bookings made using Partner Accounts.
List Accounts
Lists all partner or staff accounts matching the optional query parameters. This endpoint supports pagination. Read more on pagination here
query Parameters
string The email address for the partner or staff account. | |
partner | boolean Filter by account type. Returns only partner accounts if set to |
enabled | boolean Filter by account status. Returns only enabled accounts if set to |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "1",
- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailVerified": true,
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "created": "2015-10-30T18:59:05-05:00",
- "lastLogin": "2015-10-30T18:59:05-05:00",
- "lastLoginIp": "127.0.0.1",
- "twoFactorEnabled": true,
- "feedToken": "string",
- "staffpoolId": "1",
- "avatarUrl": "www.some-url.com/image",
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "schedules": [
- {
- "schedules": {
- "staffScheduleId": 1,
- "accountId": 1,
- "name": "January 2019",
- "startDate": "2019-01-01",
- "endDate": "2019-01-31",
- "dayOfWeekPeriods": {
- "1": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "2": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "3": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "4": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "5": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "6": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "7": {
- "startTime": "09:00",
- "endTime": "17:00"
}
}, - "enabled": true,
- "useBusinessHours": false
}
}
], - "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Fetch Account
Gets data for a specified partner or staff account.
path Parameters
id required | integer The unique identifier for the account. |
Responses
Response samples
- 200
{- "data": {
- "id": "1",
- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailVerified": true,
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "created": "2015-10-30T18:59:05-05:00",
- "lastLogin": "2015-10-30T18:59:05-05:00",
- "lastLoginIp": "127.0.0.1",
- "twoFactorEnabled": true,
- "feedToken": "string",
- "staffpoolId": "1",
- "avatarUrl": "www.some-url.com/image",
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "schedules": [
- {
- "schedules": {
- "staffScheduleId": 1,
- "accountId": 1,
- "name": "January 2019",
- "startDate": "2019-01-01",
- "endDate": "2019-01-31",
- "dayOfWeekPeriods": {
- "1": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "2": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "3": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "4": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "5": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "6": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "7": {
- "startTime": "09:00",
- "endTime": "17:00"
}
}, - "enabled": true,
- "useBusinessHours": false
}
}
], - "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Account
Archives an account.
path Parameters
id required | integer Account ID to be modified |
Responses
Response samples
- 200
{- "data": {
- "id": "1",
- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailVerified": true,
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "created": "2015-10-30T18:59:05-05:00",
- "lastLogin": "2015-10-30T18:59:05-05:00",
- "lastLoginIp": "127.0.0.1",
- "twoFactorEnabled": true,
- "feedToken": "string",
- "staffpoolId": "1",
- "avatarUrl": "www.some-url.com/image",
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "schedules": [
- {
- "schedules": {
- "staffScheduleId": 1,
- "accountId": 1,
- "name": "January 2019",
- "startDate": "2019-01-01",
- "endDate": "2019-01-31",
- "dayOfWeekPeriods": {
- "1": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "2": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "3": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "4": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "5": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "6": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "7": {
- "startTime": "09:00",
- "endTime": "17:00"
}
}, - "enabled": true,
- "useBusinessHours": false
}
}
], - "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Account
Updates a specified account.
path Parameters
id required | integer The unique identifier for the account. |
Request Body schema: application/jsonrequired
firstName | string The first name for the account user. |
lastName | string The last name for the account user. |
string The email address for the account. The email address may also be used for authentication and system notifications. | |
emailOptin | boolean Default: false Indicates if the account is opted in for service updates and product announcement notifications. |
emailSnapshot | string Default: "never" Enum: "never" "monthly" "monday" "tuesday" "wednesday" "thursday" "friday" "saturday" "sunday" Summary Schedule for receiving an email report with a summary of statistics and activity. |
mobilePhone | string Default: null Mobile Contact information for the account user. |
nickname | string A friendly short name for the account user. |
loginId | string Deprecated Login identifier to be used for authentication on the login page. Defaults to the account email address. |
tags | Array of strings Searchable tags attached to the account. Defaults to empty array. |
commissionGroup | integer Default: null The unique identifier for the commission group. Defaults to no commission group. |
enabled | boolean Default: true Indicates if the account is enabled and can be logged into. |
archived | boolean Default: false Indicates if the account is disabled. Archived accounts are hidden from most views. |
admin | boolean Default: false Indicates if the account has administrator access. |
partner | boolean Default: false Indicates if the account is a partner account. |
twoFactorEnabled | boolean Default: false Enforces multi-factor authentication during login. |
staffpoolId | integer Default: null The unique identifier of the staffpool to which this account will belong. |
permissions | Array of strings Permissions granted to the account. |
itemPermissions | Array of integers Items that the account has access to. |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "twoFactorEnabled": true,
- "staffpoolId": "1",
- "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}
Response samples
- 200
{- "data": {
- "id": "1",
- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailVerified": true,
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "created": "2015-10-30T18:59:05-05:00",
- "lastLogin": "2015-10-30T18:59:05-05:00",
- "lastLoginIp": "127.0.0.1",
- "twoFactorEnabled": true,
- "feedToken": "string",
- "staffpoolId": "1",
- "avatarUrl": "www.some-url.com/image",
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "schedules": [
- {
- "schedules": {
- "staffScheduleId": 1,
- "accountId": 1,
- "name": "January 2019",
- "startDate": "2019-01-01",
- "endDate": "2019-01-31",
- "dayOfWeekPeriods": {
- "1": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "2": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "3": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "4": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "5": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "6": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "7": {
- "startTime": "09:00",
- "endTime": "17:00"
}
}, - "enabled": true,
- "useBusinessHours": false
}
}
], - "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Create Account
Create a new partner or staff account. Required: firstName, lastName, email, nickname
Request Body schema: application/jsonrequired
firstName | string The first name for the account user. |
lastName | string The last name for the account user. |
string The email address for the account. The email address may also be used for authentication and system notifications. | |
emailOptin | boolean Default: false Indicates if the account is opted in for service updates and product announcement notifications. |
emailSnapshot | string Default: "never" Enum: "never" "monthly" "monday" "tuesday" "wednesday" "thursday" "friday" "saturday" "sunday" Summary Schedule for receiving an email report with a summary of statistics and activity. |
mobilePhone | string Default: null Mobile Contact information for the account user. |
nickname | string A friendly short name for the account user. |
loginId | string Deprecated Login identifier to be used for authentication on the login page. Defaults to the account email address. |
tags | Array of strings Searchable tags attached to the account. Defaults to empty array. |
commissionGroup | integer Default: null The unique identifier for the commission group. Defaults to no commission group. |
enabled | boolean Default: true Indicates if the account is enabled and can be logged into. |
archived | boolean Default: false Indicates if the account is disabled. Archived accounts are hidden from most views. |
admin | boolean Default: false Indicates if the account has administrator access. |
partner | boolean Default: false Indicates if the account is a partner account. |
twoFactorEnabled | boolean Default: false Enforces multi-factor authentication during login. |
staffpoolId | integer Default: null The unique identifier of the staffpool to which this account will belong. |
permissions | Array of strings Permissions granted to the account. |
itemPermissions | Array of integers Items that the account has access to. |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "twoFactorEnabled": true,
- "staffpoolId": "1",
- "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}
Response samples
- 200
{- "data": {
- "id": "1",
- "firstName": "John",
- "lastName": "Smith",
- "email": "staff@checkfront.com",
- "emailOptin": "true",
- "emailVerified": true,
- "emailSnapshot": "never",
- "mobilePhone": "1111111111",
- "nickname": "Johnny",
- "loginId": "staff@mytours.com",
- "tags": [
- "payee"
], - "commissionGroup": "0",
- "enabled": true,
- "archived": false,
- "admin": true,
- "partner": true,
- "created": "2015-10-30T18:59:05-05:00",
- "lastLogin": "2015-10-30T18:59:05-05:00",
- "lastLoginIp": "127.0.0.1",
- "twoFactorEnabled": true,
- "feedToken": "string",
- "staffpoolId": "1",
- "avatarUrl": "www.some-url.com/image",
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "schedules": [
- {
- "schedules": {
- "staffScheduleId": 1,
- "accountId": 1,
- "name": "January 2019",
- "startDate": "2019-01-01",
- "endDate": "2019-01-31",
- "dayOfWeekPeriods": {
- "1": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "2": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "3": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "4": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "5": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "6": {
- "startTime": "09:00",
- "endTime": "17:00"
}, - "7": {
- "startTime": "09:00",
- "endTime": "17:00"
}
}, - "enabled": true,
- "useBusinessHours": false
}
}
], - "permissions": [
- "inventory"
], - "itemPermissions": [
- 1
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List Company Settings
List the company settings
query Parameters
with[] | Array of strings Items Value: "redactorSettings" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": "4246",
- "name": "Example Ltd.",
- "status": "active",
- "planId": 11,
- "planName": "trial",
- "url": "example.checkfront.com",
- "industry": "tours",
- "vertical": "adventure",
- "contact": {
- "email": "example@checkfront.com",
- "phone": "+12503334444",
- "country": "CA",
- "region": "BC",
- "postalZip": "V8W1C4",
- "city": "Victoria",
- "address": "844 Courtney St"
}, - "locale": {
- "id": "en_CA",
- "language": "en",
- "timezone": "CA",
- "dateFormat": "%m/%d/%y",
- "timeFormat": "%I:%M %p",
- "dateFormatMoment": "MM/D/YY",
- "timeFormatMoment": "hh:mm A"
}, - "currency": {
- "id": "CAD",
- "symbol": "$",
- "symbolSpace": "true",
- "symbolPrecedes": "true",
- "decimals": "2",
- "decimalSeparator": ".",
- "thousandsSeparator": ","
}, - "ecommerce": {
- "allowStatusPay": true,
- "staffRequireCvc": true,
- "posTypes": [
- {
- "label": "POS - Cash",
- "value": "string",
- "icon": "string"
}
], - "acceptedCards": [
- "string"
], - "restrictCards": true,
- "allowPayFull": true,
- "depositPercent": "50",
- "depositFixedAmount": "19.99",
- "depositOnly": true,
- "skipDepositCutoff": "7",
- "customReceiptUrl": "http://www.example.com/thankyou/?booking_id={$BOOKING_ID}&total={$BOOKING_TOTAL}",
- "customReceiptUrlEarly": true
}, - "customerSettings": {
- "enableCustomerLogins": true,
- "requireCustomerLogins": true,
- "showPreBookings": true,
- "allowCustomerBookingCancel": true,
- "allowCustomerBookingCancelDays": "7",
- "allowCustomerBookingModify": true,
- "allowCustomerBookingModifyDays": "7",
- "allowCustomerBookingModifyRestrictedStatuses": [
- "STOP"
], - "enableCustomerCheckin": true,
- "checkinSuccessMessage": "You have checked in successfully.",
- "checkinPermittedStatuses": [
- "PAID"
], - "checkinStatus": "CHKIN"
}, - "businessHours": {
- "1": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "2": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "3": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "4": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "5": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "6": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "7": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Company Settings
Update company settings
Request Body schema: application/jsonrequired
name | string The company name |
object Company contact information | |
object Company currency settings | |
object Ecommerce settings | |
object Customer settings |
Responses
Request samples
- Payload
{- "name": "Example Ltd.",
- "contact": {
- "email": "example@checkfront.com",
- "phone": "+12503334444",
- "country": "CA",
- "region": "BC",
- "postalZip": "V8W1C4",
- "city": "Victoria",
- "address": "844 Courtney St"
}, - "currency": {
- "id": "CAD"
}, - "ecommerce": {
- "allowStatusPay": true,
- "staffRequireCvc": true,
- "posTypes": [
- {
- "label": "POS - Cash",
- "value": "string",
- "icon": "string"
}
], - "acceptedCards": [
- "string"
], - "restrictCards": true,
- "allowPayFull": true,
- "depositPercent": "50",
- "depositFixedAmount": "19.99",
- "depositOnly": true,
- "skipDepositCutoff": "7",
- "customReceiptUrl": "http://www.example.com/thankyou/?booking_id={$BOOKING_ID}&total={$BOOKING_TOTAL}",
- "customReceiptUrlEarly": true
}, - "customerSettings": {
- "enableCustomerLogins": true,
- "requireCustomerLogins": true,
- "showPreBookings": true,
- "allowCustomerBookingCancel": true,
- "allowCustomerBookingCancelDays": "7",
- "allowCustomerBookingModify": true,
- "allowCustomerBookingModifyDays": "7",
- "allowCustomerBookingModifyRestrictedStatuses": [
- "STOP"
], - "enableCustomerCheckin": true,
- "checkinSuccessMessage": "You have checked in successfully.",
- "checkinPermittedStatuses": [
- "PAID"
], - "checkinStatus": "CHKIN"
}
}
Response samples
- 200
{- "data": {
- "id": "4246",
- "name": "Example Ltd.",
- "status": "active",
- "planId": 11,
- "planName": "trial",
- "url": "example.checkfront.com",
- "industry": "tours",
- "vertical": "adventure",
- "contact": {
- "email": "example@checkfront.com",
- "phone": "+12503334444",
- "country": "CA",
- "region": "BC",
- "postalZip": "V8W1C4",
- "city": "Victoria",
- "address": "844 Courtney St"
}, - "locale": {
- "id": "en_CA",
- "language": "en",
- "timezone": "CA",
- "dateFormat": "%m/%d/%y",
- "timeFormat": "%I:%M %p",
- "dateFormatMoment": "MM/D/YY",
- "timeFormatMoment": "hh:mm A"
}, - "currency": {
- "id": "CAD",
- "symbol": "$",
- "symbolSpace": "true",
- "symbolPrecedes": "true",
- "decimals": "2",
- "decimalSeparator": ".",
- "thousandsSeparator": ","
}, - "ecommerce": {
- "allowStatusPay": true,
- "staffRequireCvc": true,
- "posTypes": [
- {
- "label": "POS - Cash",
- "value": "string",
- "icon": "string"
}
], - "acceptedCards": [
- "string"
], - "restrictCards": true,
- "allowPayFull": true,
- "depositPercent": "50",
- "depositFixedAmount": "19.99",
- "depositOnly": true,
- "skipDepositCutoff": "7",
- "customReceiptUrl": "http://www.example.com/thankyou/?booking_id={$BOOKING_ID}&total={$BOOKING_TOTAL}",
- "customReceiptUrlEarly": true
}, - "customerSettings": {
- "enableCustomerLogins": true,
- "requireCustomerLogins": true,
- "showPreBookings": true,
- "allowCustomerBookingCancel": true,
- "allowCustomerBookingCancelDays": "7",
- "allowCustomerBookingModify": true,
- "allowCustomerBookingModifyDays": "7",
- "allowCustomerBookingModifyRestrictedStatuses": [
- "STOP"
], - "enableCustomerCheckin": true,
- "checkinSuccessMessage": "You have checked in successfully.",
- "checkinPermittedStatuses": [
- "PAID"
], - "checkinStatus": "CHKIN"
}, - "businessHours": {
- "1": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "2": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "3": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "4": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "5": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "6": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}, - "7": {
- "isOpen": true,
- "openTime": "09:00",
- "closeTime": "17:00"
}
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
API access tokens can be used by your application to make authenticated requests to the Checkfront API.
For more information on how to authenticate your application, please see the Authentication section.
Response samples
- 200
{- "data": [
- {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create API Token
Generate a new API access token.
Request Body schema: application/jsonrequired
New API access token
name | string The application name using the API access token. |
authType | string Enum: "token" "oauth2" The authorization type for the API access token. |
redirectUri | string The URL to redirect to upon successful authorization. Defaults to an empty string. |
Responses
Request samples
- Payload
{- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string"
}
Response samples
- 200
{- "data": {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch API Token
Fetches the API access token for a specified client.
path Parameters
clientId required | string The unique identifier of the client. |
Responses
Response samples
- 200
{- "data": {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Delete API Token
Deletes the access token for a specified client.
path Parameters
clientId required | string The unique identifier for the client. |
Responses
Response samples
- 200
{- "data": {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update API Token
Update the API access token for a specified client.
path Parameters
clientId required | string The unique identifier for a client. |
Request Body schema: application/jsonrequired
Updated API access token
name | string The application name using the API access token. |
authType | string Enum: "token" "oauth2" The authorization type for the API access token. |
redirectUri | string The URL to redirect to upon successful authorization. Defaults to an empty string. |
Responses
Request samples
- Payload
{- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string"
}
Response samples
- 200
{- "data": {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Refresh API Token
Resets the API access token for a specified client.
path Parameters
clientId required | string The unique identifier for the client. |
Responses
Response samples
- 200
{- "data": {
- "clientId": "string",
- "clientSecret": "string",
- "name": "Test Application",
- "authType": "token",
- "redirectUri": "string",
- "accountId": 1,
- "created": "2015-10-30T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Products are the offers or activities your customers will book. Products can use assets to create availability.
List Products
List all Products. Use the optional status
parameter to retrieve disabled products.
Filter by type
to retrieve bundles in addition to products. This endpoint supports pagination. Read more on pagination here
query Parameters
ids | Array of integers Filter by Product id |
status | string Default: "active" Enum: "active" "draft" "archived" "unarchived" "all" Filter by Product status |
type | string Default: "product" Enum: "product" "bundle" "all" Filter by product type |
categories | Array of integers Filter by category ids |
tags | Array of integers Filter by tag ids |
assetPools | Array of integers Filter by asset pool ids |
search | string Search through names and skus |
with[] | Array of strings Items Enum: "images" "integrations" "memberships" "upsells" "defaultPricing" "resources" A list of extra information requested. Include in the query string like: |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "allocation": "day",
- "interval": 0,
- "unlimited": true,
- "templates": [
- {
- "templateId": 21,
- "dayDue": 3,
- "reminders": [
- 0
]
}
], - "customRateIds": [
- 0
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Product
Create a new product, including products that are only visible to staff or will only be upsells/addons. Also see Product Resources to attach assetpools or inventory, Product Default Pricing to set base rates, and Product Events to make the product available.
Request Body schema: application/jsonrequired
categoryId | integer The unique identifier of a Category |
name | string The name of the Product |
sku | string The unique code of the product. This can be displayed to the customer. |
summary | string <= 50000 characters A short description. This will be displayed to the customer when they view your booking page |
details | string Provide more specific details about a particular item, such as technical specifications or included amenities. |
extraDetails | string Additional description not shown during the booking process, but usable in notifications with the BOOKING_EXTRA_DETAILS variable |
url | string <uri> External link to a page on your website which goes into more detail about the item |
video | string YouTube identifier to be embedded |
location | string Location of the product. |
Array of objects (GuestType) Guest types that can be booked for this product. | |
pricingType | string Default: "allocation" Enum: "allocation" "fixed" "24H" Pricing type. |
Array of objects (Tax) List of taxes to apply to this product in a booking. | |
depositType | string Default: "system" Enum: "system" "percent" "fixed" "allocation" "quantity" "none" Deposit type. |
depositCents | integer Deposit amount, used when depositType is 'fixed', 'allocation', or 'quantity' |
depositPercent | number <float> Deposit amount, used when depositType = 'percent' |
commissionType | string Default: "fixed" Enum: "percent" "fixed" Commission type. |
commissionCents | integer Commission amount, used when commissionType = 'fixed' |
commissionPercent | number <float> Commission amount, used when commissionType = 'percent' |
weight | integer or null Sort order, in relation to other products. Sort Weight |
status | string Default: "active" Enum: "active" "draft" "archived" The status of this product. Only active Products are bookable. |
metadata | Array of objects Arbitrary data store for product specific merchant settings |
visibility | string Enum: "everyone" "staff" "upsells" Product visibility. |
allocation | string Enum: "day" "night" "flextime" "timeslot" The Product allocation type |
interval | integer Only used by flextime allocated products; the minimum bookable interval in minutes. |
unlimited | boolean Indicates the product has unlimited inventory and cannot be sold out. |
Array of objects (ProductTemplate) List of templates (documents) attached to this product, such as medical releases or liability waivers. | |
customRateIds | Array of integers List of Custom Rates (ids) assigned to this product. |
Responses
Request samples
- Payload
{- "categoryId": 1,
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "allocation": "day"
}
Response samples
- 200
{- "data": {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Product
Retrieve a single product. Use optional with
parameter to include additional information such as images and integrations.
path Parameters
productId required | number Unique identifier of the Product |
query Parameters
with[] | Array of strings Items Enum: "images" "integrations" "memberships" "upsells" "defaultPricing" "resources" A list of extra information requested. Include in the querystring like: |
Responses
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "allocation": "day",
- "interval": 0,
- "unlimited": true,
- "templates": [
- {
- "templateId": 21,
- "dayDue": 3,
- "reminders": [
- 0
]
}
], - "customRateIds": [
- 0
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Product
Disables a Product.
Products are never deleted, simply disabled. They can be re-enabled using a PATCH to set status=active.
path Parameters
productId required | number Unique identifier of the Product |
Responses
Response samples
- 200
{- "data": {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Product
Update a Product.
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
categoryId | integer The unique identifier of a Category |
name | string The name of the Product |
sku | string The unique code of the product. This can be displayed to the customer. |
summary | string <= 50000 characters A short description. This will be displayed to the customer when they view your booking page |
details | string Provide more specific details about a particular item, such as technical specifications or included amenities. |
extraDetails | string Additional description not shown during the booking process, but usable in notifications with the BOOKING_EXTRA_DETAILS variable |
url | string <uri> External link to a page on your website which goes into more detail about the item |
video | string YouTube identifier to be embedded |
location | string Location of the product. |
Array of objects (GuestType) Guest types that can be booked for this product. | |
pricingType | string Default: "allocation" Enum: "allocation" "fixed" "24H" Pricing type. |
Array of objects (Tax) List of taxes to apply to this product in a booking. | |
depositType | string Default: "system" Enum: "system" "percent" "fixed" "allocation" "quantity" "none" Deposit type. |
depositCents | integer Deposit amount, used when depositType is 'fixed', 'allocation', or 'quantity' |
depositPercent | number <float> Deposit amount, used when depositType = 'percent' |
commissionType | string Default: "fixed" Enum: "percent" "fixed" Commission type. |
commissionCents | integer Commission amount, used when commissionType = 'fixed' |
commissionPercent | number <float> Commission amount, used when commissionType = 'percent' |
weight | integer or null Sort order, in relation to other products. Sort Weight |
status | string Default: "active" Enum: "active" "draft" "archived" The status of this product. Only active Products are bookable. |
metadata | Array of objects Arbitrary data store for product specific merchant settings |
visibility | string Enum: "everyone" "staff" "upsells" Product visibility. |
allocation | string Enum: "day" "night" "flextime" "timeslot" The Product allocation type |
interval | integer Only used by flextime allocated products; the minimum bookable interval in minutes. |
unlimited | boolean Indicates the product has unlimited inventory and cannot be sold out. |
Array of objects (ProductTemplate) List of templates (documents) attached to this product, such as medical releases or liability waivers. | |
customRateIds | Array of integers List of Custom Rates (ids) assigned to this product. |
Responses
Request samples
- Payload
{- "name": "New Name"
}
Response samples
- 200
{- "data": {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Product
Copy a Product, and optionally its relations
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
sku | string The SKU name |
name | string The product name |
Responses
Request samples
- Payload
{- "sku": "string",
- "name": "string"
}
Response samples
- 200
{- "data": {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
How photos display on the Booking Page. If more than 1 photo is uploaded, the first photo listed will be the main thumbnail image on the booking page.
List Product Images
Retrieve all images for a product
path Parameters
productId required | number Unique identifier of the Product |
query Parameters
with[] | Array of strings Items Value: "base64" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Upload Product Image
Upload an image for a Product
path Parameters
productId required | integer Unique identifier of the Product |
Request Body schema: application/jsonrequired
image | string base64 or binary encoded image in .jpg .png, or .gif format |
Responses
Request samples
- Payload
{- "image": "string"
}
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "allocation": "day",
- "interval": 0,
- "unlimited": true,
- "templates": [
- {
- "templateId": 21,
- "dayDue": 3,
- "reminders": [
- 0
]
}
], - "customRateIds": [
- 0
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Product Images
Copy all images for a product
path Parameters
sourceProductId required | number Unique identifier of the source Product |
targetProductId required | number Unique identifier of the target Product |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Product Closures can be used to close availability for one or more products for a specified period of time. For example, a Whale Watching Tour
product can be closed for a specified period of time using closures due to bad weather.
Create a Product Closure
Create a product closure event.
Request Body schema: application/jsonrequired
startDate | string The start date for the closure event. |
endDate | string The inclusive end date of the closure event. |
name | string The name of the closure event. |
enabled | boolean Indicates if the closure event is enabled. |
object (DaysOfWeek) The applicable days of week | |
productIds | Array of integers The unique identifiers for the products to which the closure event applies. |
Responses
Request samples
- Payload
{- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "name": "Hurricane Closure",
- "enabled": "false",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "productIds": "[1]"
}
Response samples
- 200
{- "data": {
- "closureId": "1",
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "name": "Hurricane Closure",
- "enabled": "false",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "productIds": "[1]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Disable a Product Closure
Disable a product closure event.
path Parameters
id required | number The unique identifier of the closure event. |
Responses
Response samples
- 200
{- "data": {
- "closureId": "1",
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "name": "Hurricane Closure",
- "enabled": "false",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "productIds": "[1]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update a Product Closure
Update a product closure event.
path Parameters
id required | number The unique identifier of the closure event. |
Request Body schema: application/jsonrequired
startDate | string The start date for the closure event. |
endDate | string The inclusive end date of the closure event. |
name | string The name of the closure event. |
enabled | boolean Indicates if the closure event is enabled. |
object (DaysOfWeek) The applicable days of week | |
productIds | Array of integers The unique identifiers for the products to which the closure event applies. |
Responses
Request samples
- Payload
{- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "name": "Hurricane Closure",
- "enabled": "false",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "productIds": "[1]"
}
Response samples
- 200
{- "data": {
- "closureId": "1",
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "name": "Hurricane Closure",
- "enabled": "false",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "productIds": "[1]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Discounts are a special type of event that allow you to reduce the price of a product at the time of booking by supplying a regular discount code or a voucher code. Discounts can be used for general promotions or to track campaigns and referrals.
Note: A regular discount code is a reusable code whereas vouchers are single use codes that trigger the discount.
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Product Discount
Create a Product Discount. Discount Vouchers can be created by omitting the code
parameter and supplying the vouchers
parameter instead.
Request Body schema: application/jsonrequired
name | string The name of the product discount. |
code | string The discount's activation/coupon code to be used when making a booking. This parameter is required for regular discounts. |
vouchers | Array of strings An array of single use voucher codes to trigger the discount. This parameter is required for vouchers. |
type | string Enum: "perProduct" "beforeTax" "afterTax" Determines how the discount applies to a booking.
* |
priceAdjustmentType | string Enum: "fixed" "percent" Determines how the |
amountCents | integer For priceAdjustmentType='fixed' discounts, the discounted amount in cents |
amountPercent | number <float> For type='percent' discounts, the discounted amount as a percentage |
startDate | string The start date for the discount event. |
endDate | string The end date for the discount event. |
object The days of the week on which the discount may apply. This property is required to create a new discount. | |
applyToAllProducts | boolean Indicates if the product discount applies to all products. |
products | Array of integers The unique identifiers for the products, to which the discount applies. |
roles | Array of strings The unique identifiers for roles which auto apply the discount. |
enabled | boolean Indicates if the product discount is enabled. |
Responses
Request samples
- Payload
{- "name": "Summer Savings",
- "enabled": true,
- "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 2000,
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applyToAllProducts": true,
- "applicableDaysOfWeek": {
- "1": "true"
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Product Discount
Retrieve data for a specified Product Discount.
path Parameters
id required | number The unique identifier of the product discount. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Disable Product Discount
Disable a specified Product Discount.
path Parameters
id required | number The unique identifier of the product discount. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Product Discount
Update a specified Product Discount.
path Parameters
id required | number The unique identifier of the product discount. |
Request Body schema: application/jsonrequired
name | string The name of the product discount. |
code | string The discount's activation/coupon code to be used when making a booking. This parameter is required for regular discounts. |
vouchers | Array of strings An array of single use voucher codes to trigger the discount. This parameter is required for vouchers. |
type | string Enum: "perProduct" "beforeTax" "afterTax" Determines how the discount applies to a booking.
* |
priceAdjustmentType | string Enum: "fixed" "percent" Determines how the |
amountCents | integer For priceAdjustmentType='fixed' discounts, the discounted amount in cents |
amountPercent | number <float> For type='percent' discounts, the discounted amount as a percentage |
startDate | string The start date for the discount event. |
endDate | string The end date for the discount event. |
object The days of the week on which the discount may apply. This property is required to create a new discount. | |
applyToAllProducts | boolean Indicates if the product discount applies to all products. |
products | Array of integers The unique identifiers for the products, to which the discount applies. |
roles | Array of strings The unique identifiers for roles which auto apply the discount. |
enabled | boolean Indicates if the product discount is enabled. |
Responses
Request samples
- Payload
{- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Savings",
- "code": "SUMMERSAVINGS",
- "vouchers": [
- "SUMMERSAVINGS23"
], - "type": "perProduct",
- "priceAdjustmentType": "fixed",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "startDate": "2020-01-01",
- "endDate": "2020-02-01",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "applyToAllProducts": false,
- "products": [
- 25
], - "roles": [
- "283fffa6-0745-4c2b-bb38-903b8f607d3d"
], - "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Allotments are limits imposed by a Resource Pool Group, which determines how much capacity/quantity of a Resource Pool Group can be accessed by a Product.
List all Allotments
List all the allotments for each asset pool for a specified product for a specified date range.
Use optional with
parameter to include additional information such as logs.
path Parameters
productId required | number Unique identifier of the Product |
query Parameters
startDateTime required | string <date-time> The earliest datetime to check for activities. Formatted in ISO8601 Date Time. |
endDateTime required | string <date-time> The latest datetime to check for activities. Formatted in ISO8601 Date Time. |
with[] | Array of strings Items Value: "logs" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "productId": 204,
- "startDateTime": "2019-02-08T09:00:00",
- "endDateTime": "2019-02-08T10:00:00",
- "allotments": [
- {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}
], - "logs": [
- {
- "allotmentId": "string",
- "accountId": 0,
- "createdDate": "2019-08-24",
- "message": "string",
- "note": "string"
}
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Delete an Allotment
Delete a product's allotments for a given time period.
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
startDateTime required | string <date-time> The start date of the activity. Formatted in ISO8601 Date Time. |
endDateTime required | string <date-time> The end date of the activity. Formatted in ISO8601 Date Time. |
Responses
Request samples
- Payload
{- "startDateTime": "2019-02-08T09:00:00",
- "endDateTime": "2019-02-08T10:00:00"
}
Create an Allotment
Set allotments for a specified product for a specified time period.
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
productId | integer Unique identifier of a Product |
startDateTime | string <date-time> The start date of the activity. Formatted in ISO8601 Date Time. |
endDateTime | string <date-time> The end date of the activity. Formatted in ISO8601 Date Time. |
Array of objects (Allotment) List of allotments assigned to this product during this date range. |
Responses
Request samples
- Payload
{- "productId": 204,
- "startDateTime": "2019-02-08T09:00:00",
- "endDateTime": "2019-02-08T10:00:00",
- "allotments": [
- {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}
]
}
Response samples
- 200
{- "data": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update an Allotment
Update a specified product's allotments for a specified time period.
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
productId | integer Unique identifier of a Product |
startDateTime | string <date-time> The start date of the activity. Formatted in ISO8601 Date Time. |
endDateTime | string <date-time> The end date of the activity. Formatted in ISO8601 Date Time. |
Array of objects (Allotment) List of allotments assigned to this product during this date range. |
Responses
Request samples
- Payload
{- "productId": 204,
- "startDateTime": "2019-02-08T09:00:00",
- "endDateTime": "2019-02-08T10:00:00",
- "allotments": [
- {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}
]
}
Response samples
- 200
{- "data": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Resources (as described below in the Resources section) can be assigned to products, to be drawn from by bookings. For example, a Bicycle Rental product offering would draw on the pool of physical bikes that you have in inventory. Resources may be assigned to several different product offerings, and this ensures that the system always knows how many of your inventory is available for bookings, and prevents overbooking.
List all Product Resources
Fetch a list of resources currently attached to the product.
path Parameters
productId required | number Unique identifier of the Product |
Responses
Response samples
- 200
{- "data": {
- "productId": 204,
- "assetGroups": [
- {
- "groupId": 0,
- "assetPools": [
- {
- "assetPoolId": "100",
- "name": "Small Rafts",
- "allowProductSharing": "false",
- "timeAlignment": "exact"
}
], - "allotmentType": "quantity",
- "isPrimary": true
}
], - "staffResources": [
- {
- "id": "1",
- "staffPoolId": "1",
- "basedOn": "asset",
- "capacity": "5"
}
], - "inventory": 10
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Product Resources
Updates the resources attached to a specified product.
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
Array of objects (AssetGroupDefinition) | |
Array of objects (StaffResource) | |
inventory | any Default: null The amount of resources available to this product.
|
Responses
Request samples
- Payload
{- "assetGroups": [
- {
- "groupId": 0,
- "assetPools": [
- {
- "assetPoolId": "100",
- "name": "Small Rafts",
- "allowProductSharing": "false",
- "timeAlignment": "exact"
}
], - "allotmentType": "quantity",
- "isPrimary": true
}
], - "staffResources": [
- {
- "id": "1",
- "staffPoolId": "1",
- "basedOn": "asset",
- "capacity": "5"
}
], - "inventory": 10
}
Response samples
- 200
{- "data": {
- "productId": 204,
- "assetGroups": [
- {
- "groupId": 0,
- "assetPools": [
- {
- "assetPoolId": "100",
- "name": "Small Rafts",
- "allowProductSharing": "false",
- "timeAlignment": "exact"
}
], - "allotmentType": "quantity",
- "isPrimary": true
}
], - "staffResources": [
- {
- "id": "1",
- "staffPoolId": "1",
- "basedOn": "asset",
- "capacity": "5"
}
], - "inventory": 10
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Product Resources
Copies the attached resources from the source product to the target product.
path Parameters
sourceProductId required | number Unique identifier of the source Product |
targetProductId required | number Unique identifier of the target Product |
Responses
Response samples
- 200
{- "data": {
- "productId": 204,
- "assetGroups": [
- {
- "groupId": 0,
- "assetPools": [
- {
- "assetPoolId": "100",
- "name": "Small Rafts",
- "allowProductSharing": "false",
- "timeAlignment": "exact"
}
], - "allotmentType": "quantity",
- "isPrimary": true
}
], - "staffResources": [
- {
- "id": "1",
- "staffPoolId": "1",
- "basedOn": "asset",
- "capacity": "5"
}
], - "inventory": 10
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Product Events are used to set the availability, pricing, and booking rules for a product for a given period of time. "Override" events can be used to override a "primary" event's availability, pricing, and booking rules for a specified period within the "primary" event.
List Product Events
Fetch a list of all events attached to a specified product.
path Parameters
productId required | number The unique identifier of the product. |
Responses
Response samples
- 200
{- "data": [
- {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Product Event
Create a new event for a specified product. A product cannot have overlapping primary events or overlapping override events for a primary event.
path Parameters
productId required | number The unique identifier of the product. |
Request Body schema: application/jsonrequired
eventType | string Enum: "default" "custom" |
name | string The name of the event. |
object The period during which the event applies. Always available events have null start and end dates. | |
object (DaysOfWeek) The applicable days of week | |
enabled | boolean Indicates if the event is enabled. |
overriddenEventId | integer The unique identifier of the product event to override. |
object (Allotment) | |
object (GuestPrice) |
Responses
Request samples
- Payload
{- "eventType": "default",
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}
Response samples
- 200
{- "data": {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Product Event
Retrieve data for an event attached to a specified product.
path Parameters
productId required | number The unique identifier of the product. |
eventId required | number The unique identifier of the event. |
Responses
Response samples
- 200
{- "data": {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Delete Product Event
Remove a primary event and any override events attached to it for a specified product.
path Parameters
productId required | number The unique identifier of the product. |
eventId required | number The unique identifier of the event. |
Responses
Response samples
- 200
{- "data": {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Product Event
Update an event for a specified product.
path Parameters
productId required | number The unique identifier of the product. |
eventId required | number The unique identifier of the event. |
Request Body schema: application/jsonrequired
eventType | string Enum: "default" "custom" |
name | string The name of the event. |
object The period during which the event applies. Always available events have null start and end dates. | |
object (DaysOfWeek) The applicable days of week | |
enabled | boolean Indicates if the event is enabled. |
overriddenEventId | integer The unique identifier of the product event to override. |
object (Allotment) | |
object (GuestPrice) |
Responses
Request samples
- Payload
{- "eventType": "default",
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}
Response samples
- 200
{- "data": {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Product Events
Copy product events from one product to another.
path Parameters
sourceProductId required | number The unique identifier of the source product. |
targetProductId required | number The unique identifier of the target product. |
Responses
Response samples
- 200
{- "data": {
- "eventId": 1,
- "eventType": "default",
- "productId": 1,
- "name": "Winter 2021",
- "datePeriod": {
- "start": "2021-01-01",
- "end": "2021-04-01"
}, - "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}, - "enabled": true,
- "overriddenEventId": 20,
- "availability": {
- "resourcePoolId": 0,
- "allotmentLimit": "10"
}, - "pricing": {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Product Default Pricing determines the base rate(s) for a product and/or for the guests attached to that product. If there is no default pricing and pricing events set for a product, then that product can be booked free of cost. For example, you can charge a base rate of $25 per guest for an activity.
Product Default Pricing also provides an option for "Group Pricing" which allows price adjustment based on the quantity of the product and/or the number of guests booking at a time. For example, assuming you have a configuration based on the example above, you could charge $20 per guest or per group of guests using "Group Pricing".
Retrieve Default Pricing for a product
Retrieve default pricing configurations for a specified product.
path Parameters
productId required | number The unique identifier of the product. |
Responses
Response samples
- 200
{- "data": {
- "productId": 0,
- "productPrices": [
- {
- "amount": 2000,
- "groupMin": "1",
- "groupMax": "3"
}
], - "guestPrices": [
- {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Default Pricing for a Product
Updates default pricing configurations for a specified product.
path Parameters
productId required | number The unique identifier of the product. |
Request Body schema: application/jsonrequired
Array of objects (ProductPrice) | |
Array of objects (GuestPrice) |
Responses
Request samples
- Payload
{- "productPrices": [
- {
- "amount": 2000,
- "groupMin": "1",
- "groupMax": "3"
}
], - "guestPrices": [
- {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
]
}
Response samples
- 200
{- "data": {
- "productId": 0,
- "productPrices": [
- {
- "amount": 2000,
- "groupMin": "1",
- "groupMax": "3"
}
], - "guestPrices": [
- {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Pricing for a Product
Copies Default Pricing from the source product to the target product.
path Parameters
sourceProductId required | number The unique identifier of the source product. |
targetProductId required | number The unique identifier of the target product. |
Responses
Response samples
- 200
{- "data": {
- "productId": 0,
- "productPrices": [
- {
- "amount": 2000,
- "groupMin": "1",
- "groupMax": "3"
}
], - "guestPrices": [
- {
- "guestType": "adult",
- "amount": 1000,
- "pricingType": "guest",
- "groupMin": "1",
- "groupMax": "3"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Upsells (also referred to as Addons) are products which have been attached to other products so they can be optionally added to the cart at the time of booking. Upsells exist as independent products and are attached to each individual parent product to be bookable as an optional upsell. Upsells can be offered at a discount (or a premium) when added to the cart as an upsell rather than a regular product.
List Product Upsells
List upsells assigned to a product.
path Parameters
productId required | number Unique identifier of the Product |
Responses
Response samples
- 200
{- "data": [
- {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Replace Upsells
Replace all Upsells for a Product
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
productId | integer Unique identifier of the Product |
preselected | boolean Indicates that this upsell should be pre-selected for the customer during checkout. |
priceOverridePercentage | number <float> The percentage of the product's normal price that should be charged |
attachmentType | string Enum: "optional" "preselected" "required" Defines if the Upsell must be booked with the parent product, or may be selected optionally |
dateRestriction | string Enum: "unrestricted" "useParentDates" "selectWithinParentDates" "custom" Defines the dates for which an Upsell may be booked relative to the parent Product |
restrictGuestTypeAdjustment | boolean Indicates that this Upsell's GuestType values should be restricted to those of the parent Product. |
Array of objects (ProductGuestTypeMap) var array | |
object (UpsellDateSpanSettings) The settings to use when defining the days for which the upsell may be booked in relation to the parent. | |
allowTimeAdjustment | boolean Indicates if the upsell can be booked for times that are different than the parent |
position | integer Order to display upsell in relation to other upsells |
Responses
Request samples
- Payload
{- "productId": 204,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Upsell
Retrieve a specific upsell for a specified product.
path Parameters
productId required | number Unique identifier of the Product |
addonId required | number Unique ID of the Upsell Product |
Responses
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Assign Upsell to Product
Assign an existing product to another product as an upsell.
path Parameters
productId required | number Unique identifier of the Product |
addonId required | number Unique ID of the Upsell Product |
Request Body schema: application/jsonrequired
productId | integer Unique identifier of the Product |
preselected | boolean Indicates that this upsell should be pre-selected for the customer during checkout. |
priceOverridePercentage | number <float> The percentage of the product's normal price that should be charged |
attachmentType | string Enum: "optional" "preselected" "required" Defines if the Upsell must be booked with the parent product, or may be selected optionally |
dateRestriction | string Enum: "unrestricted" "useParentDates" "selectWithinParentDates" "custom" Defines the dates for which an Upsell may be booked relative to the parent Product |
restrictGuestTypeAdjustment | boolean Indicates that this Upsell's GuestType values should be restricted to those of the parent Product. |
Array of objects (ProductGuestTypeMap) var array | |
object (UpsellDateSpanSettings) The settings to use when defining the days for which the upsell may be booked in relation to the parent. | |
allowTimeAdjustment | boolean Indicates if the upsell can be booked for times that are different than the parent |
position | integer Order to display upsell in relation to other upsells |
Responses
Request samples
- Payload
{- "productId": 204,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Remove Upsell
Remove an upsell from a product.
path Parameters
productId required | number Unique identifier of the Product |
addonId required | number Unique ID of the Upsell Product |
Responses
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Upsell
Update an upsell attached to a product. The upsell configuration can be changed (such as price percentage) but not the upsell product itself.
path Parameters
productId required | number Unique identifier of the Product |
addonId required | number Unique ID of the Upsell Product |
Request Body schema: application/jsonrequired
productId | integer Unique identifier of the Product |
preselected | boolean Indicates that this upsell should be pre-selected for the customer during checkout. |
priceOverridePercentage | number <float> The percentage of the product's normal price that should be charged |
attachmentType | string Enum: "optional" "preselected" "required" Defines if the Upsell must be booked with the parent product, or may be selected optionally |
dateRestriction | string Enum: "unrestricted" "useParentDates" "selectWithinParentDates" "custom" Defines the dates for which an Upsell may be booked relative to the parent Product |
restrictGuestTypeAdjustment | boolean Indicates that this Upsell's GuestType values should be restricted to those of the parent Product. |
Array of objects (ProductGuestTypeMap) var array | |
object (UpsellDateSpanSettings) The settings to use when defining the days for which the upsell may be booked in relation to the parent. | |
allowTimeAdjustment | boolean Indicates if the upsell can be booked for times that are different than the parent |
position | integer Order to display upsell in relation to other upsells |
Responses
Request samples
- Payload
{- "productId": 204,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Copy Upsell
Copy an upsell from the source product to the target product.
path Parameters
sourceProductId required | number Unique identifier of the source Product |
targetProductId required | number Unique identifier of the target Product |
Responses
Response samples
- 200
{- "data": {
- "productId": 204,
- "addonId": 220,
- "preselected": true,
- "priceOverridePercentage": "50",
- "attachmentType": "required",
- "dateRestriction": "useParentDates",
- "restrictGuestTypeAdjustment": true,
- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "customDateSpanSettings": {
- "startDateReference": "parentStartDate",
- "startDateModifier": "-3",
- "endDateReference": "parentEndDate",
- "endDateModifier": "3"
}, - "allowTimeAdjustment": true,
- "position": 2
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Guest Type Maps describe the relationship between the Guest Types of a parent product and those of a child product. For example, if a parent product has the Guest Type Senior, but an upsell has the Guest Type Adult, a Guest Type Map can be used to indicate that the upsell should be booked for the same number of Adults as the parent's Senior Guest Type.
Retrieve Guest Type Maps
Lists Guest Type Maps for a parent product
path Parameters
parentProductId required | integer The unique identifier of the parent product for which to retrieve Guest Type Maps |
query Parameters
childProductId | integer The unique identifier of the child product for which to get Guest Type Maps |
Responses
Response samples
- 200
{- "data": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Delete Guest Type Maps
Deletes Guest Type Maps for a parent product
path Parameters
parentProductId required | integer The unique identifier of the parent product for which to delete Guest Type Maps |
query Parameters
childProductId | integer The unique identifier of the child product for which to delete Guest Type Maps |
Responses
Replace Guest Type Maps
Replaces or adds entire mapping for a parent product
path Parameters
parentProductId required | integer The unique identifier of the parent product for which a given child product's Guest Type Maps will be replaced |
Request Body schema: application/jsonrequired
Array of objects (ProductGuestTypeMap) | |||||||
Array
|
Responses
Request samples
- Payload
{- "guestTypeMaps": [
- {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}
]
}
Response samples
- 200
{- "data": {
- "childProductId": 0,
- "parentGuestTypeId": "senior",
- "childGuestTypeId": "adult"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Assets are the real life assets your organization uses to offer its products. Examples include an eight person tour bus, a two bedroom cabin, or a kids mountain bike.
Equivalent Assets are grouped into an Asset Pool (e.g. a group of two bedroom cabins, or a set of kids mountain bikes), which Checkfront uses to calculate the availability of the product(s) to which the Asset Pool has been attached.
List Asset Pools
Lists all the asset pools that match the query parameters.
query Parameters
name | string The name of the Asset Pool |
categoryId | number The unique identifier of an Asset Pool Category |
ids | Array of integers A list of Asset Pool ids to retrieve |
archived | string Default: "0" Enum: "0" "1" "all" Filter the Asset Pool's Assets by their archived status. Not Archived: 0; Archived: 1; Both Archived and not Archived: all |
with[] | Array of strings Items Enum: "events" "assignments" "productInfo" A list of extra information requested. Requesting productInfo will return all products that are using the asset. Requesting events will return all events for each asset returned that occur within the specified dates. Requesting assignments will return all assignments for each asset that occur during the requested dates. If requesting events or assignments, startDateTime and endDateTime must be specified in the request. |
startDateTime | string <date-time> The earliest datetime to check for assignments or bookings. Formatted in ISO8601 Date Time. |
endDateTime | string <date-time> The latest datetime to check for assignments or bookings. Formatted in ISO8601 Date Time. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": null,
- "quantity": null
}
], - "requiredAssets": [
- {
- "resourcePoolId": null,
- "quantity": null,
- "pendingAssignments": null
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Asset Pool
Creates a new Asset Pool object. Assets are added via the Add Assets to an Asset Pool endpoint.
Request Body schema: application/jsonrequired
name | string The name of the Asset Pool. |
capacity | integer The number of guests each asset in the Asset Pool can support. |
categoryId | integer The unique identifier of the Asset Pool Category. |
maintenanceTime | integer The amount of time after an activity that an Asset in the Asset Pool needs in order to be prepared for the next booking, in minutes. When an asset is in maintenance it is unavailable for bookings. |
archived | boolean |
Responses
Request samples
- Payload
{- "name": "Helmets",
- "capacity": 1,
- "categoryId": 1
}
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch AssetPool
Get data for a specific Asset Pool. Can include booking status and assignments.
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
query Parameters
archived | string Default: "0" Enum: "0" "1" "all" Filter the Asset Pool's Assets by their archived status. Not Archived: 0; Archived: 1; Both Archived and not Archived: all |
with[] | Array of strings Items Enum: "hasBookings" "assignments" A list of extra information requested |
startDateTime | string <date-time> The earliest datetime to check for assignments or bookings. Formatted in ISO8601 Date Time. |
endDateTime | string <date-time> The latest datetime to check for assignments or bookings. Formatted in ISO8601 Date Time. |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Asset Pool
Disables an Asset Pool
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Asset Pool
Update the fields of an Asset Pool.
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
Request Body schema: application/jsonrequired
name | string The name of the assetpool |
categoryId | integer the category in which to place the pool |
maintenanceTime | integer The amount of time after an activity that an Asset in the Asset Pool needs in order to be prepared for the next booking, in minutes. When an asset is in maintenance it is unavailable for bookings. |
archived | boolean |
Responses
Request samples
- Payload
{- "name": "string",
- "categoryId": "1",
- "maintenanceTime": "60",
- "archived": true
}
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Asset
Gets a single Asset.
path Parameters
assetpoolId required | number |
assetId required | number |
query Parameters
with[] | Array of strings Items Enum: "hasBookings" "assignments" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Asset
Archives an Asset. After an Asset is archived, it is removed from the Asset Pool and unassigned from activities.
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
assetId required | number The unique identifier of the Asset |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Asset
Update the fields of a single Asset.
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
assetId required | number The unique identifier of the Asset |
Request Body schema: application/jsonrequired
sku | string The code used by the organization to identify the Asset |
metadata | object Data object for storing custom key/value pairs. |
status | string Default: "available" Enum: "available" "unavailable" The availability status of the Asset. |
Responses
Request samples
- Payload
{- "sku": "Helmets-8675309",
- "metadata": { },
- "status": "available"
}
Response samples
- 200
{- "data": {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Add Assets to an Asset Pool
After an asset pool has been created, use this endpoint to add any number of assets to it. You can supply either an array of SKUs, or a number of assets. If you supply a count value, then Checkfront will autogenerate assets for you.
path Parameters
assetpoolId required | number The unique identifier of the Asset Pool |
Request Body schema: application/jsonrequired
skus | Array of strings The list of Asset SKUs. For each SKU an asset will be created. Incompatible with |
count | number The number of assets to add. Incompatible with |
Responses
Request samples
- Payload
{- "skus": [
- "Helmets-8675309"
], - "count": 0
}
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Helmets",
- "quantity": 10,
- "capacity": 1,
- "categoryId": 0,
- "categoryName": "Boats",
- "assets": [
- {
- "id": 0,
- "sku": "Helmets-8675309",
- "archived": true,
- "hasBookings": true,
- "metadata": { },
- "assignments": [
- {
- "activitySummary": {
- "id": 204,
- "name": "High-Flying Zipline Tour",
- "startDateTime": "2015-10-30T18:00:00-05:00",
- "endDateTime": "2015-10-30T18:00:30-05:00",
- "bookingCount": 3,
- "guests": [
- {
- "id": "adult",
- "quantity": 2
}
], - "requiredAssets": [
- {
- "resourcePoolId": 26,
- "quantity": 3,
- "pendingAssignments": 2
}
], - "assignmentStatus": "assigned",
- "allocation": "day",
- "activityKey": "21_20200421_20200421_0900_1000"
}, - "softAssigned": true
}
], - "status": "available",
- "events": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
]
}
], - "maintenanceTime": 60,
- "archived": true,
- "productInfo": [
- {
- "productId": 0,
- "canShareAsset": true
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Asset Events are periods in time where an asset's status can be overridden. For example, an asset event can make an asset unavailable during a specific period.
List all Asset Events
Lists all Asset Events for the given Asset
path Parameters
assetpoolId required | number The unique ID of the Asset Pool |
assetId required | number The unique ID of the Asset |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Asset Event
Create a new Asset Event. If the asset is assigned to bookings that occur during the given date range, it will be unassigned from those bookings.
path Parameters
assetpoolId required | number The unique ID of the Asset Pool |
assetId required | number The unique ID of the Asset |
Request Body schema: application/jsonrequired
startDateTime | string Event's start date and time. |
endDateTime | string Event's end date and time. |
eventType | string Default: "unavailable" Value: "unavailable" The type of event. |
Responses
Request samples
- Payload
{- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
Response samples
- 200
{- "data": {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Asset Event
Retrieve data for a specific Asset Event
path Parameters
assetpoolId required | number The unique ID of the Asset Pool |
assetId required | number The unique ID of the Asset |
assetEventId required | number The unique ID of the Asset Event |
Responses
Response samples
- 200
{- "data": {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Asset Event
Delete an Asset Event. The deleted event is returned in the response.
path Parameters
assetpoolId required | number The unique ID of the Asset Pool |
assetId required | number The unique ID of the Asset |
assetEventId required | number The unique ID of the Asset Event |
Responses
Response samples
- 200
{- "data": {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Asset Event
Update an Asset Event. If the asset is assigned to bookings that occur during the given date range, it will be unassigned from those bookings.
path Parameters
assetpoolId required | number The unique ID of the Asset Pool |
assetId required | number The unique ID of the Asset |
assetEventId required | number The unique ID of the Asset Event |
Request Body schema: application/jsonrequired
startDateTime | string Event's start date and time. |
endDateTime | string Event's end date and time. |
eventType | string Default: "unavailable" Value: "unavailable" The type of event. |
Responses
Request samples
- Payload
{- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}
Response samples
- 200
{- "data": {
- "id": "6",
- "resourcePoolId": "7",
- "resourceId": "8",
- "startDateTime": "2019-12-31 13:00",
- "endDateTime": "2019-12-31 14:00",
- "eventType": "unavailable"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Asset Pool Categories are a way of grouping similar Asset Pools together. For example, an Asset Pool Category of 'Equipment' could group together 'Helmets' and 'Gloves'.
List Asset Pool Categories
Lists the Asset Pool Categories that match the query parameters.
query Parameters
name | string Filter using the name of the Asset Pool Category. If no name is supplied all Asset Pool Categories are returned in the response. |
with[] | Array of strings Items Value: "counts" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "name": "Boats",
- "description": "A fleet of boats",
- "numberOfAssets": 0,
- "numberOfAssetPools": 0
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Asset Pool Category
Creates an Asset Pool Category.
Request Body schema: application/jsonrequired
name | string The name of the Asset Pool Category. |
description | string A Short description of the Asset Pool Category |
Responses
Request samples
- Payload
{- "name": "Boats",
- "description": "A fleet of boats"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Boats",
- "description": "A fleet of boats",
- "numberOfAssets": 0,
- "numberOfAssetPools": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Asset Pool Category
Gets a single Asset Pool Category.
path Parameters
id required | integer Asset Pool Category ID to fetch |
query Parameters
with[] | Array of strings Items Value: "counts" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Boats",
- "description": "A fleet of boats",
- "numberOfAssets": 0,
- "numberOfAssetPools": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Asset Pool Category
Update an Asset Pool Category.
path Parameters
id required | integer The unique identifier of the Asset Pool Category |
Request Body schema: application/jsonrequired
name | string The name of the Asset Pool Category. |
description | string A Short description of the Asset Pool Category |
Responses
Request samples
- Payload
{- "name": "Boats",
- "description": "A fleet of boats"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Boats",
- "description": "A fleet of boats",
- "numberOfAssets": 0,
- "numberOfAssetPools": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
A Bundle is a collection of required products that are sold together at a potential discount or premium.
The products within a Bundle are referred to as Bundle Children, each Bundle Child must be available in order for the Product Bundle to be available.
List Product Bundles
List all Product Bundles. Use the optional status
parameter to retrieve disabled bundles.
query Parameters
status | string Default: "active" Enum: "active" "draft" "archived" "all" Filter by Product status |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Bundle
Create a new bundle.
Products are listed in the bundleChildren
property, which is a list of product ids.
Request Body schema: application/jsonrequired
categoryId | integer The unique identifier of a Category |
name | string The name of the Product |
sku | string The unique code of the product. This can be displayed to the customer. |
summary | string <= 50000 characters A short description. This will be displayed to the customer when they view your booking page |
details | string Provide more specific details about a particular item, such as technical specifications or included amenities. |
extraDetails | string Additional description not shown during the booking process, but usable in notifications with the BOOKING_EXTRA_DETAILS variable |
url | string <uri> External link to a page on your website which goes into more detail about the item |
video | string YouTube identifier to be embedded |
location | string Location of the product. |
Array of objects (GuestType) Guest types that can be booked for this product. | |
pricingType | string Default: "allocation" Enum: "allocation" "fixed" "24H" Pricing type. |
Array of objects (Tax) List of taxes to apply to this product in a booking. | |
depositType | string Default: "system" Enum: "system" "percent" "fixed" "allocation" "quantity" "none" Deposit type. |
depositCents | integer Deposit amount, used when depositType is 'fixed', 'allocation', or 'quantity' |
depositPercent | number <float> Deposit amount, used when depositType = 'percent' |
commissionType | string Default: "fixed" Enum: "percent" "fixed" Commission type. |
commissionCents | integer Commission amount, used when commissionType = 'fixed' |
commissionPercent | number <float> Commission amount, used when commissionType = 'percent' |
weight | integer or null Sort order, in relation to other products. Sort Weight |
status | string Default: "active" Enum: "active" "draft" "archived" The status of this product. Only active Products are bookable. |
metadata | Array of objects Arbitrary data store for product specific merchant settings |
visibility | string Enum: "everyone" "staff" Product visibility. |
Array of objects (BundleChild) The products that are included in the bundle |
Responses
Request samples
- Payload
{- "categoryId": 1,
- "name": "All Day Adventure",
- "sku": "alldayadventure",
- "bundleChildren": [
- 200,
- 203,
- 330
]
}
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Bundle
Retrieve a single bundle. Use optional with
parameter to include additional information such as images.
path Parameters
productId required | number Unique identifier of the Product |
query Parameters
with[] | Array of strings Items Value: "images" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Archive Bundle
Disable a bundle.
Bundles are never deleted, simply disabled. They can be re-enabled using a PATCH to set status=active.
path Parameters
productId required | number Unique identifier of the Product |
Responses
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Bundle
Update a Bundle
path Parameters
productId required | number Unique identifier of the Product |
Request Body schema: application/jsonrequired
categoryId | integer The unique identifier of a Category |
name | string The name of the Product |
sku | string The unique code of the product. This can be displayed to the customer. |
summary | string <= 50000 characters A short description. This will be displayed to the customer when they view your booking page |
details | string Provide more specific details about a particular item, such as technical specifications or included amenities. |
extraDetails | string Additional description not shown during the booking process, but usable in notifications with the BOOKING_EXTRA_DETAILS variable |
url | string <uri> External link to a page on your website which goes into more detail about the item |
video | string YouTube identifier to be embedded |
location | string Location of the product. |
Array of objects (GuestType) Guest types that can be booked for this product. | |
pricingType | string Default: "allocation" Enum: "allocation" "fixed" "24H" Pricing type. |
Array of objects (Tax) List of taxes to apply to this product in a booking. | |
depositType | string Default: "system" Enum: "system" "percent" "fixed" "allocation" "quantity" "none" Deposit type. |
depositCents | integer Deposit amount, used when depositType is 'fixed', 'allocation', or 'quantity' |
depositPercent | number <float> Deposit amount, used when depositType = 'percent' |
commissionType | string Default: "fixed" Enum: "percent" "fixed" Commission type. |
commissionCents | integer Commission amount, used when commissionType = 'fixed' |
commissionPercent | number <float> Commission amount, used when commissionType = 'percent' |
weight | integer or null Sort order, in relation to other products. Sort Weight |
status | string Default: "active" Enum: "active" "draft" "archived" The status of this product. Only active Products are bookable. |
metadata | Array of objects Arbitrary data store for product specific merchant settings |
visibility | string Enum: "everyone" "staff" Product visibility. |
Array of objects (BundleChild) The products that are included in the bundle |
Responses
Request samples
- Payload
{- "name": "All Day Adventure!!!"
}
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
How photos display on the Booking Page. If more than 1 photo is uploaded, the first photo listed will be the main thumbnail image on the booking page.
Fetch Bundle Images
Retrieve images for a bundle
path Parameters
productId required | number Unique identifier of the Product |
query Parameters
with[] | Array of strings Items Value: "base64" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Upload Bundle Image
Upload an image for a Bundle
path Parameters
productId required | integer Target Product id |
Request Body schema: application/jsonrequired
image | string base64 or binary encoded image in .jpg .png, or .gif format |
Responses
Request samples
- Payload
{- "image": "string"
}
Response samples
- 200
{- "data": {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "visibility": "everyone",
- "bundleChildren": [
- {
- "id": 204,
- "categoryId": 13,
- "categoryName": "Zipline Tours",
- "name": "High-Flying Zipline Tour",
- "sku": "highflyingzipline",
- "summary": "Fly between the trees in this adrenaline fueled experience",
- "details": "For ages 13+",
- "extraDetails": "Remember to bring water!",
- "images": [
- {
- "id": "product-1",
- "title": "Beach View Condo"
}
], - "video": "dQw4w9WgXcQ",
- "location": "string",
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "pricingType": "allocation",
- "taxes": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "depositType": "system",
- "depositCents": 500,
- "depositPercent": 5,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "weight": 0,
- "status": "active",
- "metadata": {
- "taxId": "TOUR_001215",
- "awards": [
- "productOfTheYear2019",
- "bestValue2020"
]
}, - "type": "product",
- "productId": 204,
- "priceOverridePercentage": "50",
- "bufferTime": 0
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Categories are used to organize inventory items in a manner that makes the most sense to you and your customers. For example, you may wish to include your room rental products under an "Accommodations" category and your bike rental products under a "Bike Adventures" category.
List Categories
Lists all categories. This endpoint supports pagination. Read more on pagination here
query Parameters
populated | boolean Default: "false" When toggled on, this endpoint returns only categories with one or more items/products. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 0,
- "name": "Bike Rentals",
- "description": "One-day Bike Rental Products",
- "weight": "1",
- "imageUrl": "string",
- "status": "enabled",
- "itemCount": 0
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Category
Create a category.
Request Body schema: application/jsonrequired
name | string The name of the category. |
description | string Description to be shown on Hero Layout for the category. |
weight | integer Default: "1" Sort Weight for the category. Categories are displayed in descending order of sort weight. |
status | string Default: "enabled" Enum: "enabled" "hidden" "archived" The status of the category. |
Responses
Request samples
- Payload
{- "name": "Bike Rentals"
}
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Bike Rentals",
- "description": "One-day Bike Rental Products",
- "weight": "1",
- "imageUrl": "string",
- "status": "enabled",
- "itemCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch Category
Retrieves a specified Category.
path Parameters
id required | integer The unique identifier of the Category. |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Bike Rentals",
- "description": "One-day Bike Rental Products",
- "weight": "1",
- "imageUrl": "string",
- "status": "enabled",
- "itemCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Disable Category
Archives a specified Category. A category can be un-archived using a PATCH to set the status
property.
path Parameters
id required | integer The unique identifier of the Category. |
Responses
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Bike Rentals",
- "description": "One-day Bike Rental Products",
- "weight": "1",
- "imageUrl": "string",
- "status": "enabled",
- "itemCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Category
Update a specified Category.
path Parameters
id required | integer The unique identifier of the Category. |
Request Body schema: application/jsonrequired
name | string The name of the category. |
description | string Description to be shown on Hero Layout for the category. |
weight | integer Default: "1" Sort Weight for the category. Categories are displayed in descending order of sort weight. |
status | string Default: "enabled" Enum: "enabled" "hidden" "archived" The status of the category. |
Responses
Request samples
- Payload
{- "name": "Bike Rentals"
}
Response samples
- 200
{- "data": {
- "id": 0,
- "name": "Bike Rentals",
- "description": "One-day Bike Rental Products",
- "weight": "1",
- "imageUrl": "string",
- "status": "enabled",
- "itemCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Custom Rates are used to apply bulk price changes to selected Products. For example: Tiered Pricing
Search for Custom Rates
Lists Custom Rates
query Parameters
enabled | boolean Filter by status. Returns only enabled Custom Rates if set to |
endingAfter | string <date> Filter by rates ending on or after a date. Example: '2019-12-31'. |
startingBefore | string <date> Filter by rates starting on or before a date. Example: '2019-12-31'. |
productIds | Array of integers Filter by product ids |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "ruleId": 2,
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create a Custom Rate
Create a Custom Rate
Request Body schema: application/jsonrequired
name | string The name of the Custom Rate. |
type | string Enum: "multiDuration" "singleDuration" The type of the Custom Rate. |
startDate | string <date-time> The first date the Custom Rate applies. |
endDate | string <date-time> The last date the Custom Rate applies, or null if it applies indefinitely. |
enabled | boolean Whether Custom Rate is enabled |
Array of objects (CustomRateRule) | |
applyTo | Array of integers The list of productId's this Custom Rate applies to |
Responses
Request samples
- Payload
{- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "ruleId": 2,
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Retrieve a Custom Rate
Retrieves a Custom Rate by unique customRateId.
path Parameters
customRateId required | integer |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "ruleId": 2,
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Disables a Custom Rate
Disables a Custom Rate by unique customRateId. The disabled Custom Rate is returned in the response.
path Parameters
customRateId required | integer |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "ruleId": 2,
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update a single Custom Rate
Update an existing Custom Rate. Only properties that are specified in the request will be updated, if a property is not included in the request the value will not be changed.
path Parameters
customRateId required | integer |
Request Body schema: application/jsonrequired
name | string The name of the Custom Rate. |
type | string Enum: "multiDuration" "singleDuration" The type of the Custom Rate. |
startDate | string <date-time> The first date the Custom Rate applies. |
endDate | string <date-time> The last date the Custom Rate applies, or null if it applies indefinitely. |
enabled | boolean Whether Custom Rate is enabled |
Array of objects (CustomRateRule) | |
applyTo | Array of integers The list of productId's this Custom Rate applies to |
Responses
Request samples
- Payload
{- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "Summer Rates 2020",
- "type": "multiDuration",
- "startDate": "2020-01-01",
- "endDate": "2020-05-01",
- "enabled": true,
- "rules": [
- {
- "ruleId": 2,
- "threshold": 3,
- "ruleType": "multiDuration, singleDuration",
- "adjustmentCents": "500",
- "adjustmentPercent": "-25",
- "adjustment": "percent"
}
], - "applyTo": "[4, 8, 15, 16, 23, 42]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Form Fields are the individual inputs which make up a given Booking Form or Guest Form. Form Fields can be filtered by status, form type, guest types and the product or item to which they apply. This provides enough granularity to generate all the metadata needed for a given Booking Form or Guest Form.
There are two basic types of form fields - system fields and custom fields.
System Fields: These are form fields that are generated by Checkfront and can only have certain properties modified. These fields can be archived, hidden to staff or customers, or made non-required, however doing so can impact system functionality. For example, Checkfront generates an email address form field with the identifier customer_email by default, and this is the only field that will be used when sending email notifications to customers.
Custom Fields: These are form fields that you can create and are highly customizable. For example, you could create a form field to collect additional information like "Special Requests" from your customers.
List Form Fields
Lists all Form Fields matching the query parameters.
query Parameters
archived | boolean Indicates if archived form fields should be fetched. Defaults to all form fields. |
formType | string Enum: "booking" "guest" Form type to fetch the form fields for. Defaults to all form types. |
guestTypes | Array of strings The unique identifier of the guest type to fetch the form fields for. Defaults to all guest types. |
items | Array of integers Deprecated Deprecated, use |
applyTo | Array of integers The unique identifier of the items or product using the form field. Defaults to all products and items. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "customer_extra_note",
- "label": "Extra Note",
- "reportLabel": "Customer Note",
- "tip": "Is there anything we can do to make your experience more awesome?",
- "type": "textarea",
- "formType": "booking",
- "defaultValue": "I am excited for the tour!",
- "position": 5,
- "system": true,
- "filter": false,
- "filtered": {
- "startHidden": true,
- "showFilterId": "enter_address_checkbox",
- "showOperator": "is",
- "showFilterChoice": 0,
- "hideFilterId": "enter_address_checkbox",
- "hideOperator": "is not",
- "hideFilterChoice": 0
}, - "staff": {
- "form": true,
- "required": false,
- "invoice": false
}, - "customer": {
- "form": true,
- "required": true,
- "invoice": true
}, - "archived": false,
- "customerProfile": true,
- "contactInfo": true,
- "guestTypes": [
- "adult"
], - "choices": [
- "I have delivery address."
], - "defaultChoices": [
- 0
], - "displayOther": false,
- "items": [
- 0
], - "applyTo": [
- 220,
- 255
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
List Tags
Lists tags. This endpoint supports pagination. Read more on pagination here
query Parameters
enabled | string Default: "1" Enum: "0" "1" "all" Filter by enabled status. Default 1. |
visibility | string Enum: "everyone" "staff" "reports" Filter by visibility status. Default all visibility types. |
with[] | Array of strings Items Value: "items" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Tag
Create a tag.
Request Body schema: application/jsonrequired
name | string |
visibility | string Enum: "everyone" "staff" "reports" Visibility |
enabled | boolean |
weight | integer >= 0 Sort weight |
Array of objects (TagItem) The list of Item or Product IDs for which this tag applies to. |
Responses
Request samples
- Payload
{- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Tag
Update a tag.
path Parameters
id required | integer Tag ID to update |
Request Body schema: application/jsonrequired
name | string |
visibility | string Enum: "everyone" "staff" "reports" Visibility |
enabled | boolean |
weight | integer >= 0 Sort weight |
Array of objects (TagItem) The list of Item or Product IDs for which this tag applies to. |
Responses
Request samples
- Payload
{- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "walking-tours",
- "visibility": "everyone",
- "enabled": true,
- "weight": 0,
- "items": [
- {
- "id": 204
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Guest Types represent different customer types that can book your products. Examples include Adults, Children, or Guests.
Response samples
- 200
{- "data": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Guest Type
Create a Guest Type.
Request Body schema: application/jsonrequired
id | string Unique identifier for the guest type |
label | string Display label for the guest type |
visibility | string Who can see this guest type in the booking flow? |
items | any A list of Item ID's using this guest type |
products | any A list of Product ID's using this guest type |
Responses
Request samples
- Payload
{- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
Response samples
- 200
{- "data": {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Get Guest Type
Get settings for a Guest Type
path Parameters
id required | string The unique identifier for the Guest Type. |
query Parameters
with[] | Array of strings Items Value: "items,products"
|
Responses
Update Guest Type
Update settings for a Guest Type
path Parameters
id required | string The unique identifier for the Guest Type. |
Request Body schema: application/jsonrequired
id | string Unique identifier for the guest type |
label | string Display label for the guest type |
visibility | string Who can see this guest type in the booking flow? |
items | any A list of Item ID's using this guest type |
products | any A list of Product ID's using this guest type |
Responses
Request samples
- Payload
{- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
Taxes represent different taxes set in your ecommerce settings that can allocate to your products. An example could be GST/PST BC - 12%.
List Taxes
Lists taxes. This endpoint supports pagination. Read more on pagination here
query Parameters
enabled | string Default: "1" Enum: "0" "1" "all" Filter by enabled status. Default 1. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Tax
Create a tax.
Request Body schema: application/jsonrequired
name | string |
amountCents | integer For non-percent type taxes, the amount to charge in cents |
amountPercent | number <float> For type='percent' taxes, the percentage |
type | string Default: "percent" Enum: "percent" "perBooking" "perItem" "perAllocation" "perQuantity" |
reach | string Default: "all" Enum: "all" "region" "country" "international" |
compound | boolean Apply on top of earlier taxes that have a lower Display Order. |
inclusive | boolean This tax is already included in the item's asking price. |
inclusiveHidden | boolean Causes inclusive taxes to not be displayed to the end customer. |
applyTo | Array of integers The list of productId's this applies to |
accountNumber | string Optional Tax Number to show on Invoices |
weight | integer Sort Weight |
enabled | boolean |
Responses
Request samples
- Payload
{- "name": "GST",
- "amountPercent": "5.5",
- "type": "percent"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Tax
Update a tax.
path Parameters
id required | integer Tax ID to update |
Request Body schema: application/jsonrequired
name | string |
amountCents | integer For non-percent type taxes, the amount to charge in cents |
amountPercent | number <float> For type='percent' taxes, the percentage |
type | string Default: "percent" Enum: "percent" "perBooking" "perItem" "perAllocation" "perQuantity" |
reach | string Default: "all" Enum: "all" "region" "country" "international" |
compound | boolean Apply on top of earlier taxes that have a lower Display Order. |
inclusive | boolean This tax is already included in the item's asking price. |
inclusiveHidden | boolean Causes inclusive taxes to not be displayed to the end customer. |
applyTo | Array of integers The list of productId's this applies to |
accountNumber | string Optional Tax Number to show on Invoices |
weight | integer Sort Weight |
enabled | boolean |
Responses
Request samples
- Payload
{- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}
Response samples
- 200
{- "data": {
- "id": 1,
- "name": "GST",
- "amountCents": 500,
- "amountPercent": "12.0",
- "type": "percent",
- "reach": "all",
- "compound": true,
- "inclusive": true,
- "inclusiveHidden": true,
- "applyTo": "[4, 8, 15, 16, 23, 42]",
- "accountNumber": "123456789 RT0001",
- "weight": 0,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Document Templates are digital documents that can be signed by your customers online from any computer, tablet, or mobile device. They are fully integrated into the booking process, and can be automatically added to bookings based on products.
List Document Templates
Lists all document templates that match the query parameters.
query Parameters
status | string Default: "active" Enum: "active" "void" "disabled" "all" Filter by document template status |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 21,
- "name": "Liability Waiver",
- "status": "active"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Statuses are used to represent the state of a booking as it relates to your business's workflow and the booking's payment status. For example, the "deposit" status indicates that the booking has been partially paid.
Response samples
- 200
{- "data": [
- {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Status
Create a Status.
Request Body schema: application/jsonrequired
id | string The ID of the status. |
color | string The color of the status. |
name | string The name of the status. |
position | integer The position of the status. |
locking | boolean Whether the status is a locking status. |
enabled | boolean Whether the status is enabled. |
Responses
Request samples
- Payload
{- "name": "Quote",
- "id": "QUOTE",
- "locking": false
}
Response samples
- 200
{- "data": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Retrieve Status
Retrieves a specified status.
path Parameters
id required | string The unique identifier of the Status. |
Responses
Response samples
- 200
{- "data": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Status
Update a specified Status.
path Parameters
id required | string The unique identifier of the Status. |
Request Body schema: application/jsonrequired
id | string The ID of the status. |
color | string The color of the status. |
name | string The name of the status. |
position | integer The position of the status. |
locking | boolean Whether the status is a locking status. |
enabled | boolean Whether the status is enabled. |
Responses
Request samples
- Payload
{- "name": "Quote"
}
Response samples
- 200
{- "data": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
A booking is a reservation of any number of Items or Products for any number of people for a given date and time. Examples include a Whale Watching tour from 1:00 - 4:00, or an all-day Kayak Rental.
Fetch Booking
Fetches a Booking.
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
query Parameters
with[] | Array of strings Items Enum: "customer" "lineItems" "status" "notes" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Booking
Update basic Booking data
path Parameters
bookingCode required | string The unique code for the booking |
Request Body schema: application/jsonrequired
language | string The preferred language locale for booking communications. |
object (CustomerFields) Booking Form field details associated with the customer profile. This dictionary's keys match formField.id's, and includes any custom fields configured. | |
customerId | any The unique identifier for the customer. |
partnerId | integer or null Partner Account identifier associated with the booking. |
Responses
Request samples
- Payload
{- "language": "de_DE",
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "customerId": 1,
- "partnerId": null
}
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List Bookings
Lists bookings that match the query parameters. This endpoint supports pagination. Read more on pagination here
query Parameters
startMin | string <date-time> Filter to bookings which start after this time |
startMax | string <date-time> Filter to bookings which start before this time |
endMin | string <date-time> Filter to bookings which end after this time |
endMax | string <date-time> Filter to bookings which end before this time |
inProgressMin | string <date-time> Filter to bookings which occur after this time |
inProgressMax | string <date-time> Filter to bookings which occur before this time |
createdMin | string <date-time> Filter to bookings created after this time |
createdMax | string <date-time> Filter to bookings created before this time |
customerId | number Filter to bookings associated with this customer profile. Example: 64. |
search | string Search bookings by wildcard search, including booking code, and customer details like name, email, phone number, and address. |
itemId | number Deprecated Deprecated, use |
productIds | Array of numbers Filter to bookings which include these Item or Product IDs. Example: [205, 150]. |
status | string Deprecated Deprecated, use |
statuses | Array of strings Filter bookings by a list of statuses. Example: ['PRE', 'PAID', 'STOP']. |
excludedStatuses | Array of strings Filter out bookings currently in these statusIds. Example: ['PRE', 'VOID', 'STOP']. |
accountIds | integer Filter to bookings which include these Account IDs. Example: [205, 150]. |
categoryIds | Array of numbers Filter to bookings which include these Category IDs. Example: [205, 150]. |
tagIds | Array of numbers Filter to bookings which include these Tag IDs. Example: [205, 150]. |
with[] | Array of strings Items Enum: "customer" "lineItems" "status" "notes" A list of extra information requested. Specifying 'customer' will return customer information for each booking. Specifying 'status' will return more information regarding the booking status such as name and description. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
List Customer Bookings
Lists all bookings for a Customer. This endpoint supports pagination. Read more on pagination here
path Parameters
customerId required | integer The unique ID of the Customer |
query Parameters
with[] | Array of strings Items Enum: "customer" "lineItems" "status" "notes" A list of extra information requested. Specifying 'customer' will return customer information for each booking. Specifying 'status' will return more information regarding the booking status such as name and description. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Check-in Booking
Check-in a booking or guests.
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/json
Array of objects Guest ID's to check-in. If no Guest ID's are supplied all guests will be checked in. | |||
Array
|
Responses
Request samples
- Payload
{- "guests": [
- {
- "guestActivityId": 0
}
]
}
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Check-out Booking
Check-out a booking or guests.
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/json
Array of objects Guest ID's to check-out. If no Guest ID's are supplied all guests will be checked out. | |||
Array
|
Responses
Request samples
- Payload
{- "guests": [
- {
- "guestActivityId": 0
}
]
}
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Reset Checked-in Status
Resets the Checked-in/out status to default values.
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/json
Array of objects Guest ID's to reset checked in/out status. If no Guest ID's are supplied all guests will be reset. | |||
Array
|
Responses
Request samples
- Payload
{- "guests": [
- {
- "guestActivityId": 0
}
]
}
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Change Booking Status
Changes the status of a booking, optionally triggering email notifications for that status.
path Parameters
bookingCode required | string The unique code for the booking |
Request Body schema: application/json
statusId | string Enum: "HOLD" "PAID" "PART" "PEND" "PRE" "WAIT" "STOP" "VOID" "yourCustomStatus" The new Status ID. If changing to/from a Locked status, will affect availability. |
sendNotifications | boolean Send email Notifications for the new Booking Status |
applyPayment | boolean When the new statusId='PAID', should a POS Transaction be created for the remaining balance due? |
allowOverbooking | boolean When changing to a Locked status, allow even if the booking consumes more inventory than is available. |
Responses
Request samples
- Payload
{- "statusId": "PAID",
- "sendNotifications": "true",
- "applyPayment": "true",
- "allowOverbooking": "true"
}
Response samples
- 200
{- "data": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": { }
}, - "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List booking Notes
Lists the notes on a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Fetch booking Note
Fetch a note on a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
noteId required | integer Note id to fetch |
Responses
Response samples
- 200
{- "data": {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Delete booking Note
Removes a note from a booking using noteId
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
noteId required | integer Note Id to remove |
Responses
Response samples
- 200
{- "data": {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update booking Note
Update a note on a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
noteId required | integer Note Id to update |
Request Body schema: application/jsonrequired
accountId | integer or null Unique ID of the Staff Account, if the note was created by a staff. |
body | string The content of the note. |
public | boolean Displays the note on customer-visible invoices |
Responses
Request samples
- Payload
{- "accountId": 1,
- "body": "string",
- "public": true
}
Response samples
- 200
{- "data": {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Create booking Note
Create a note
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/jsonrequired
accountId | integer or null Unique ID of the Staff Account, if the note was created by a staff. |
body | string The content of the note. |
public | boolean Displays the note on customer-visible invoices |
Responses
Request samples
- Payload
{- "accountId": 1,
- "body": "string",
- "public": true
}
Response samples
- 200
{- "data": {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Guests are the individual participants for Activities on a Booking. Guest entries have standard information like First Name, Last Name, & Email but can also have custom information defined by the Guest Form. Guests can only belong to a single Booking, but can be associated with multiple Activities.
List booking Guests
Lists the guests registered to a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Responses
Response samples
- 200
{- "data": [
- {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Doe",
- "email": "example@email.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete",
- "documents": null
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create booking Guest
Create a guest
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/jsonrequired
country | string Country of the Guest |
region | string Region of the Guest |
phone | string Phone number of the Guest |
object (GuestFields) Guest Form field details associated with the guest. This dictionary's keys match formField.id's, and includes any custom fields configured. | |
Array of objects (BookingGuestActivity) | |
status | string Enum: "incomplete" "pending" "complete" |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete"
}
Response samples
- 200
{- "data": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Doe",
- "email": "example@email.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete",
- "documents": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Fetch booking Guest
Fetch a guest on a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
uuid required | string Guest uuid to fetch |
Responses
Response samples
- 200
{- "data": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Doe",
- "email": "example@email.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete",
- "documents": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Remove booking Guest
Removes a guest from a booking using uuid
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
uuid required | string Guest uuid to remove |
Responses
Response samples
- 200
{- "data": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Doe",
- "email": "example@email.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete",
- "documents": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update booking Guest
Update a guest on a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
uuid required | string Guest uuid to update |
Request Body schema: application/jsonrequired
country | string Country of the Guest |
region | string Region of the Guest |
phone | string Phone number of the Guest |
object (GuestFields) Guest Form field details associated with the guest. This dictionary's keys match formField.id's, and includes any custom fields configured. | |
Array of objects (BookingGuestActivity) | |
status | string Enum: "incomplete" "pending" "complete" |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete"
}
Response samples
- 200
{- "data": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Doe",
- "email": "example@email.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "fields": {
- "uuid": "2645683b-ba9f-402b-b348-4b7dffb4d301",
- "guestId": "1",
- "customerAccountId": 41,
- "firstName": "John",
- "lastName": "Smith",
- "email": "test@test.com",
- "country": "Canada",
- "region": "British Columbia",
- "phone": "250-999-2209",
- "guest_first_name": "Jane",
- "guest_last_name": "smith",
- "guest_email": "jane@example.com",
- "guest_phone": "+12505551234",
- "swimming_experience": "none"
}, - "activities": [
- {
- "bookingItem": [
- {
- "id": 0,
- "lineId": "string",
- "qty": "string",
- "name": "High-Flying Zipline Tour",
- "sku": "string",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "created": "2015-10-30T18:59:05-05:00",
- "dateDescription": "string",
- "timeDescription": "string",
- "subTotal": 10000,
- "inclusiveTaxTotal": 909,
- "taxTotal": 1200,
- "total": 11200,
- "guestTypes": [
- {
- "id": "adult",
- "label": "Adult",
- "visibility": "staff",
- "items": "[1, 2, 3]",
- "products": "[4, 5, 6]"
}
], - "totalGuests": 0
}
], - "guestType": "adult",
- "guestActivityId": 12,
- "checkIn": "2018-11-30T14:33:12-06:00",
- "checkOut": "2018-11-30T14:33:12-06:00"
}
], - "status": "incomplete",
- "documents": null
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Customer accounts provide your clients with the ability to log in and manage their own bookings and contact information. Customer information is automatically stored in the system when a new booking is made.
List Customers
Lists all customer accounts.
query Parameters
code | string = 11 characters Filter by the unique identifier of the customer. |
string Filter by the email address of the customer. | |
phone | string Filter by the phone number of the customer. |
firstName | string Filter by the first name of the customer. |
lastName | string Filter by the last name of the customer. |
status | string Default: "active" Enum: "active" "archived" "blocked" Filter by the status of the customer. |
with[] | Array of strings Items Enum: "newestBooking" "bookingStats" A list of extra information requested |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": { },
- "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Retrieve Customer
Get account data for a specified customer.
path Parameters
customerId required | integer The unique identifier for the customer. |
query Parameters
with[] | Array of strings Items Enum: "newestBooking" "bookingStats" A list of extra information requested |
Responses
Response samples
- 200
{- "data": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": { },
- "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Customer
Updates account information for a specified customer. Partial fields objects are acceptable; pass a value of null to delete custom field values.
path Parameters
customerId required | integer The unique identifier for the customer. |
Request Body schema: application/jsonrequired
status | string Enum: "active" "archived" "blocked" The status of the customer's account. |
language | string The language locale for the customer. |
object (CustomerFields) Booking Form field details associated with the customer profile. This dictionary's keys match formField.id's, and includes any custom fields configured. |
Responses
Request samples
- Payload
{- "status": "active",
- "language": "de_DE",
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}
}
Create Customer
Creates a new customer account.
Request Body schema: application/jsonrequired
status | string Enum: "active" "archived" "blocked" The status of the customer's account. |
language | string The language locale for the customer. |
object (CustomerFields) Booking Form field details associated with the customer profile. This dictionary's keys match formField.id's, and includes any custom fields configured. |
Responses
Request samples
- Payload
{- "status": "active",
- "language": "de_DE",
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}
}
Response samples
- 200
{- "data": {
- "id": "1",
- "code": "NZ2-503-605",
- "status": "active",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "account": {
- "dateLastLogin": "2015-10-30T18:59:05-05:00",
- "emailVerified": true,
- "claimed": true
}, - "bookingStats": [
- {
- "numberOfBookings": 0,
- "sumOfBookingTotals": "0.00"
}
], - "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "newestBooking": {
- "id": "76",
- "code": "ABCD-010115",
- "created": "2015-10-30T18:59:05-05:00",
- "start": "2015-10-30T18:59:05-05:00",
- "end": "2015-10-30T18:59:05-05:00",
- "checkIn": "2015-10-30T18:59:05-05:00",
- "checkOut": "2015-10-30T18:59:05-05:00",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane@example.com",
- "language": "de_DE",
- "subTotal": 6000,
- "inclusiveTaxTotal": 300,
- "taxTotal": 720,
- "total": 6720,
- "paidTotal": 3360,
- "fields": {
- "customer_first_name": "Jane",
- "customer_last_name": "smith",
- "customer_email": "jane@example.com",
- "customer_address": "1234 West Georgia Street",
- "customer_city": "Vancouver",
- "customer_country": "CA",
- "customer_region": "BC",
- "customer_postal_zip": "V4N5M8",
- "customer_phone": "+12505551234",
- "customer_email_optin": "true",
- "favourite_color": "blue"
}, - "statusId": "PAID",
- "itemSummary": "Item Name 1, Item Name 2",
- "status": {
- "id": "PAID",
- "color": "#77bb22",
- "name": "Paid",
- "position": 1,
- "locking": true,
- "enabled": true
}, - "customerId": 1,
- "customer": { },
- "cfx": "726918a43b46c996d06f9b445b283dd2a514486e94d462dcab69be51e065200c",
- "gcfx": "1013837677b4acbe9d8172ebbc26e8dc0c74e499cfdce48c40b1c7e32de7da38",
- "notes": [
- {
- "id": 11,
- "bookingId": 140,
- "accountId": 1,
- "date": "2015-10-30T18:59:05-05:00",
- "body": "string",
- "public": true
}
], - "discountCode": "TENPERCENTOFF",
- "accountId": 0,
- "partnerId": null
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Redact Customer information
Redacts all personally identifiable information for a specified customer account, including their booking contact info, notes, transaction cardholder info, ip addresses, and logs.
path Parameters
customerId required | integer The unique identifier for the customer. |
Request Body schema: application/jsonrequired
waivers | boolean Also remove associated waivers. Verify your legal environment permits this before enabling. |
fields required | string List of custom booking field IDs which contain information that should be redacted too. Appropriate system fields will always be redacted. |
Responses
Request samples
- Payload
{- "waivers": true,
- "fields": [
- "customer_age"
]
}
Update Account Password
Updates the password for a customer account.
path Parameters
customerId required | integer The unique identifier for the customer. |
Request Body schema: application/jsonrequired
currentPassword | string The customer's current password. Only required if the requesting user is a customer or staff without customer edit privileges. |
newPassword required | string The new password to be set. The new password must be a minimum of 8 characters. |
Responses
Request samples
- Payload
{- "newPassword": "CorrectHorseBatteryStaple"
}
List Transactions
Lists transactions
query Parameters
start | string <date-time> |
end | string <date-time> |
accountId | number |
providerId | string |
type | string Payment method as reported by the Payment Provider |
mask | string |
paymentName | string |
Responses
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Fetch Transaction
Fetches a transaction
path Parameters
transactionId required | string Transaction ID to fetch |
Responses
Response samples
- 200
{- "data": {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List booking Transactions
Lists a booking's transactions. This endpoint supports pagination. Read more on pagination here
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
query Parameters
start | string <date-time> |
end | string <date-time> |
accountId | number |
providerId | string |
type | string Payment method as reported by the Payment Provider |
mask | string |
paymentName | string |
Responses
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create POS payment
Creates a POS payment
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/jsonrequired
POS Payment request
transactionId | string |
amount | integer |
mask | string The last 4 digits of the payment card |
type | string Default: "CREDIT" Enum: "CREDIT" "CASH" "Cheque" "yourCustomType" Payment type, such as 'Visa', 'Debit', 'Cheque' |
paymentName | string Cardholder name |
note | string |
showNoteOnInvoice | boolean Default: false Whether to display the note on customer-visible invoices |
Responses
Request samples
- Payload
{- "amount": 2000
}
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Fetch booking Transaction
Fetches a booking's transaction
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
transactionId required | string Transaction ID to fetch |
Responses
Response samples
- 200
{- "data": {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update POS Transaction metadata
Updates POS transaction metadata
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
transactionId required | string Transaction to update |
Request Body schema: application/jsonrequired
Update request
date | string <date-time> |
type | string Payment type, such as 'Visa', 'Debit', 'Cheque' |
Responses
Request samples
- Payload
{- "date": "2019-08-24T14:15:22Z",
- "type": "Visa"
}
Response samples
- 200
{- "data": {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Create Gift Certificate Payment
Makes a payment using a Gift Certificate
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
giftcertCode required | string Identifier for Gift Certificate used for paying |
Request Body schema: application/jsonrequired
GiftCert Payment request
amount | integer Amount to pay. Required, unless payBookingDue is true |
note | string |
showNoteOnInvoice | boolean Default: false |
sendNotifications | boolean Default: true Trigger configured Email/SMS Notifications for the booking's new status |
payBookingDue | boolean Default: false Amount to be paid is the balance due as calculated by the booking |
allowPartialPayment | boolean Default: false If the gift certificate is insufficient to cover the amount requested, allow staff to * secure the booking by applying the gift certificate balance as a partial payment |
allowPendingPayment | boolean Default: false If the gift certificate is insufficient to cover the amount requested, attach the gift * certificate to the booking and charge it once sufficient payment has been applied |
allowOverbooking | boolean Default: false Optional parameter to allow staff to force an overbooking |
Responses
Request samples
- Payload
{- "amount": 0,
- "note": "string",
- "showNoteOnInvoice": false,
- "sendNotifications": true,
- "payBookingDue": false,
- "allowPartialPayment": false,
- "allowPendingPayment": false,
- "allowOverbooking": false
}
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Capture Pending Gift Certificate Payments
Makes a payment using a Gift Certificate
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Responses
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Remove Pending Gift Certificate Payments
Removes all pending Gift Certificate payments from a Booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Responses
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Remove a Pending Gift Certificate Payment
Removes a pending Gift Certificate payment from a Booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
giftcertCode required | string Identifier for Gift Certificate used for paying |
Responses
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Import Transaction
Imports an existing live payment, applying it to a booking
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
Request Body schema: application/jsonrequired
Payment Import request
transactionId required | string |
providerId required | string |
note | string |
showNoteOnInvoice | boolean Default: false |
Responses
Request samples
- Payload
{- "transactionId": "string",
- "providerId": "string",
- "note": "string",
- "showNoteOnInvoice": false
}
Response samples
- 200
{- "data": [
- {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Refund Transaction
Refunds a booking's transaction
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
transactionId required | string Transaction ID to refund |
Request Body schema: application/jsonrequired
Refund request
amount required | integer |
toCard | boolean |
note | string |
paymentType | string |
refundToken | string |
showNoteOnInvoice | boolean Default: false |
sendNotifications | boolean Default: true |
Responses
Request samples
- Payload
{- "amount": 0,
- "toCard": true,
- "note": "string",
- "paymentType": "string",
- "refundToken": "string",
- "showNoteOnInvoice": false,
- "sendNotifications": true
}
Response samples
- 200
{- "data": {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Refund to existing Gift Certificate
Refunds a payment to an existing Gift Certificate
path Parameters
bookingCode required | string The unique code for the booking, encoded with its creation date as XXXX-MMDDYY |
transactionId required | string |
giftcertCode required | string Giftcert to refund to |
Request Body schema: application/jsonrequired
Refund to Existing Giftcert request
amount required | integer |
expiryDate | string Update the Gift Certificate's expiry date |
sendNotifications | boolean Default: true Trigger configured Email/SMS Notifications for the booking's new status |
note | string |
showNoteOnInvoice | boolean Default: false |
Responses
Request samples
- Payload
{- "amount": 0,
- "expiryDate": "string",
- "sendNotifications": true,
- "note": "string",
- "showNoteOnInvoice": false
}
Response samples
- 200
{- "data": {
- "transactionId": "TEST1446249543",
- "bookingCode": "LCTN-301015",
- "date": "2015-10-30T18:59:05-05:00",
- "amount": 7425,
- "fee": 122,
- "providerId": "TestPayment",
- "mask": "1111",
- "type": "Visa",
- "paymentName": "John Smith",
- "accountId": 0,
- "status": "completed"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
The gift certificate add-on enables you to offer redeemable gift certificates to your customers that can be applied towards the value of a future booking. Gift certificates can be wrapped in an item in order to be purchasable by customers.
Gift certificates are highly customizable, allowing you to set up a gift certificate according to your liking. Gift certificates allow customized codes, messages, themes, validity period and delivery options.
Fetch Gift Certificate
Retrieve a specified Gift Certificate.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Gift Certificate
Update an existing gift certificate.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Request Body schema: application/jsonrequired
Update Gift Certificate request
code | string The unique code to be used for applying the gift certificate. |
start | string <date> The first day of the gift certificate's validity period. |
expiry | string <date> The last day of the gift certificate's validity period. |
expiryType | string Enum: "never" "date" Determines how the gift certificate expires.
* |
senderMessage | string The message from the sender to the recipient of the gift certificate. |
senderEmail | string The sender's email address. |
senderName | string The sender's name to be displayed on the gift certificate. |
recipientName | string The recipient's name to be displayed on the gift certificate. |
recipientEmail | string The email address of the recipient. |
themeId | string Enum: "summer" "seasonal" "celebration" "none" The unique identifier for a theme provided by Checkfront. |
balance | integer The funds available on the gift certificate, in cents. For example, if a gift certificate has $10 in available funds, this parameter would be 1000. |
delivery | string <date-time> The date and time when the gift certificate should be delivered through an email notification. |
skipDelivery | boolean Indicates if the gift certificate should be delivered to the recipient's email. |
Responses
Request samples
- Payload
{- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "delivery": "2020-10-01T18:59:05-05:00",
- "skipDelivery": "sample@test.com"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List Gift Certificates
Fetch a list of gift certificates, which can be filtered using query parameters. This endpoint supports pagination. Read more on pagination here
query Parameters
bookingCode | string The unique code for the booking used to purchase a gift certificate. |
with[] | Array of strings Items Value: "booking" A list of extra information requested |
search | string Search through names, emails, and codes |
bookingId | integer The numeric identifier of the booking used to purchase a gift certificate. |
recipientEmail | string The email address of the recipient. |
recipientName | string The name of the recipient. |
senderEmail | string The email address of the sender. |
senderName | string The name of the sender. |
sourceItemId | integer The unique identifier of the wrapper gift certificate item, through which the gift certificate was sold to a customer. |
sourceItemName | string The name of the gift certificate item, through which the gift certificate was booked by the customer. |
status | string Enum: "active" "voided" "reserved" The status of the gift certificate. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Gift Certificate
Issue a custom gift certificate. Required: recipientEmail
Request Body schema: application/jsonrequired
Issue Gift Certificate request
code | string The unique code to be used for applying the gift certificate. |
start | string <date> The first day of the gift certificate's validity period. |
expiry | string <date> The last day of the gift certificate's validity period. |
expiryType | string Enum: "never" "date" Determines how the gift certificate expires.
* |
senderMessage | string The message from the sender to the recipient of the gift certificate. |
senderEmail | string The sender's email address. |
senderName | string The sender's name to be displayed on the gift certificate. |
recipientName | string The recipient's name to be displayed on the gift certificate. |
recipientEmail | string The email address of the recipient. |
themeId | string Enum: "summer" "seasonal" "celebration" "none" The unique identifier for a theme provided by Checkfront. |
balance | integer The funds available on the gift certificate, in cents. For example, if a gift certificate has $10 in available funds, this parameter would be 1000. |
delivery | string <date-time> The date and time when the gift certificate should be delivered through an email notification. |
skipDelivery | boolean Indicates if the gift certificate should be delivered to the recipient's email. |
Responses
Request samples
- Payload
{- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "delivery": "2020-10-01T18:59:05-05:00",
- "skipDelivery": "sample@test.com"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Send Gift Certificate notifications
Send notifications for a specified gift certificate.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Void Gift Certificate
Deactivate a specified gift certificate.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Activate Gift Certificate
Re-activate a specified gift certificate, which was previously de-activated.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Responses
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Add funds to Gift Certificate
Add funds to a specified gift certificate.
path Parameters
giftCertificateIdentifier required | string The unique identifier of the gift certificate or the code used by the gift certificate. |
Request Body schema: application/jsonrequired
amount required | integer Funds to add to the gift certificate, in cents. For example, to add $10 to a gift certificate, the |
expiry | string <date> The last day of the gift certificate's validity period. |
Responses
Request samples
- Payload
{- "amount": 1000,
- "expiry": "2020-10-01"
}
Response samples
- 200
{- "data": {
- "id": 1,
- "bookingId": 1,
- "code": "G123456-123-123456",
- "start": "2020-01-01",
- "expiry": "2020-10-01",
- "expiryType": "never",
- "status": "voided",
- "created": "2020-10-01T18:59:05-05:00",
- "lastUsed": "2020-10-01T18:59:05-05:00",
- "senderMessage": "Hi Alice, Happy Birthday!",
- "senderEmail": "sample@test.com",
- "senderName": "Bob",
- "recipientName": "Alice",
- "recipientEmail": "sample@test.com",
- "themeId": "summer",
- "balance": 1000,
- "paidBalance": 7500,
- "bonusBalance": 2500,
- "cumulativeTotal": 1000,
- "sourceItemId": 25,
- "delivery": "2020-10-01T18:59:05-05:00"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Product Availability returns the inventory for every company business hour within a specified period for products.
List inventory for all products
Get inventory amount available for all products within a specified time period.
query Parameters
startDate required | string <date> The earliest date to check for available inventory. Formatted in ISO 8601 format. |
endDate required | string <date> The latest date to check for available inventory. Formatted in ISO 8601 format. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "220",
- "type": "Item",
- "categoryId": "3",
- "name": "Buggy Tour",
- "sku": "buggy-tour",
- "allocation": "day",
- "availability": [
- {
- "startDate": "2020-02-21",
- "endDate": "2020-02-21",
- "startTime": "09:00",
- "endTime": "13:00",
- "status": "available",
- "availableInventory": "10",
- "maxInventory": "10",
- "resourcePoolGroups": [
- {
- "primary": "true",
- "allotments": [
- {
- "resourcePoolId": "220",
- "resourcePoolName": "Bikes",
- "allotmentType": "quantity",
- "allotmentLimit": "10",
- "allotmentLimitMax": "Bikes"
}
]
}
], - "unlimited": "true",
- "productsConsumingAssets": "[\n\t * 7 => [\n\t * 264 => [\n\t * 'allotmentType' => 'capacity',\n\t * 'allowProductSharing' => false,\n\t * 'guestAmount' => 8,\n\t * 'guestTypes' => ['adult', 'child'],\n\t * 'name' => 'Jeep Tour',\n\t * ],\n\t * ],\n\t * ]",
- "bookedInventory": "10"
}
], - "len": "2",
- "fixedStart": "false"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Retrieve inventory for a product
Get inventory amount available for a product within a specified time period.
path Parameters
id required | integer The unique identifier for the Product. |
query Parameters
startDate required | string <date> The earliest date to check for available inventory. Formatted in ISO 8601 Date. |
endDate required | string <date> The latest date to check for available inventory. Formatted in ISO 8601 Date. |
Responses
Response samples
- 200
{- "data": {
- "id": "220",
- "type": "Item",
- "categoryId": "3",
- "name": "Buggy Tour",
- "sku": "buggy-tour",
- "allocation": "day",
- "availability": [
- {
- "startDate": "2020-02-21",
- "endDate": "2020-02-21",
- "startTime": "09:00",
- "endTime": "13:00",
- "status": "available",
- "availableInventory": "10",
- "maxInventory": "10",
- "resourcePoolGroups": [
- {
- "primary": "true",
- "allotments": [
- {
- "resourcePoolId": "220",
- "resourcePoolName": "Bikes",
- "allotmentType": "quantity",
- "allotmentLimit": "10",
- "allotmentLimitMax": "Bikes"
}
]
}
], - "unlimited": "true",
- "productsConsumingAssets": "[\n\t * 7 => [\n\t * 264 => [\n\t * 'allotmentType' => 'capacity',\n\t * 'allowProductSharing' => false,\n\t * 'guestAmount' => 8,\n\t * 'guestTypes' => ['adult', 'child'],\n\t * 'name' => 'Jeep Tour',\n\t * ],\n\t * ],\n\t * ]",
- "bookedInventory": "10"
}
], - "len": "2",
- "fixedStart": "false"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Retrieve inventory for an item or product
Get inventory amount available for a item or product within a specified time period.
path Parameters
id required | integer The unique identifier for the Item/Product. |
query Parameters
startDate required | string <date> The earliest date to check for available inventory. Formatted in ISO 8601 Date. |
endDate required | string <date> The latest date to check for available inventory. Formatted in ISO 8601 Date. |
startTime | string <time> The earliest time to check for available inventory. Formatted in ISO 8601 Date. |
endTime | string <time> The latest time to check for available inventory. Formatted in ISO 8601 Date. |
with[] | Array of strings Items Value: "bookedInventory" A list of extra information requested. Include in the querystring like: |
Responses
Response samples
- 200
{- "data": {
- "id": "220",
- "type": "Item",
- "categoryId": "3",
- "name": "Buggy Tour",
- "sku": "buggy-tour",
- "allocation": "day",
- "availability": [
- {
- "startDate": "2020-02-21",
- "endDate": "2020-02-21",
- "startTime": "09:00",
- "endTime": "13:00",
- "status": "available",
- "availableInventory": "10",
- "maxInventory": "10",
- "resourcePoolGroups": [
- {
- "primary": "true",
- "allotments": [
- {
- "resourcePoolId": "220",
- "resourcePoolName": "Bikes",
- "allotmentType": "quantity",
- "allotmentLimit": "10",
- "allotmentLimitMax": "Bikes"
}
]
}
], - "unlimited": "true",
- "productsConsumingAssets": "[\n\t * 7 => [\n\t * 264 => [\n\t * 'allotmentType' => 'capacity',\n\t * 'allowProductSharing' => false,\n\t * 'guestAmount' => 8,\n\t * 'guestTypes' => ['adult', 'child'],\n\t * 'name' => 'Jeep Tour',\n\t * ],\n\t * ],\n\t * ]",
- "bookedInventory": "10"
}
], - "len": "2",
- "fixedStart": "false"
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Retrieve booking counts for an item or product
Get booking counts for an item or product within a specified time period.
path Parameters
id required | integer The unique identifier for the Item/or Product. |
query Parameters
startDate required | string <date> The earliest date to check for booking counts. Formatted in ISO 8601 date format. |
endDate required | string <date> The latest date to check for booking counts. Formatted in ISO 8601 date format. |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "220",
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "startTime": "09:00",
- "endTime": "10:00",
- "bookingCount": "10"
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
List Items
Lists items
query Parameters
enabled | string Default: "1" Enum: "0" "1" "all" Filter by enabled status: * 0 = disabled * 1 = enabled * all = both. Default '1'. |
type | string Default: "all" Enum: "item" "giftCertificate" "all" Filter by type: 'item', 'giftCertificate', or 'all' |
usesDateBasedInventory | boolean Filter by usesDateBasedInventory |
orderBy | string Sort order of items |
Responses
Response samples
- 200
{- "data": [
- {
- "id": 1,
- "sku": "examplesku",
- "name": "Example Item",
- "type": "item",
- "stock": 1,
- "categoryId": 1,
- "categoryName": "Zipline Tours",
- "summary": "This is an example summary",
- "details": "These are details about the example",
- "emailDetails": "These are details about the example to be emailed to the customer",
- "enabled": true,
- "defaultStatus": "available",
- "unlimited": false,
- "aliasId": 2,
- "usesDateBasedInventory": true,
- "usesSimpleInventory": true,
- "weight": 0,
- "visibility": "everyone",
- "allocation": "timeslots",
- "fixedLength": 0,
- "fixedStartTime": "09:00",
- "defaultLength": 2,
- "maintenanceTime": 2,
- "priceType": "unit",
- "priceFixed": "5.00",
- "prices": [
- {
- "itemEventId": 2,
- "parameterPrices": [
- {
- "parameter": "qty",
- "price": "10.00",
- "groups": [
- {
- "min": 5,
- "max": 10,
- "groupPrice": "8.00",
- "groupPricing": "group"
}
]
}
]
}
], - "timeslots": [
- {
- "startTime": "09:00",
- "duration": "40",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}
}
], - "taxes": [
- 0
], - "rules": {
- "parameters": [
- {
- "parameter": "qty",
- "min": 1,
- "max": 10
}
], - "deposit": {
- "type": "percent",
- "amount": 50
}
}, - "parameters": [
- "qty"
], - "package": {
- "pricePercentage": 100,
- "startingPrice": "149.99",
- "children": [
- {
- "childId": 5,
- "optin": "optional",
- "hideCustomerInvoice": true,
- "pricePercentage": 50,
- "selectPackageDates": true,
- "customDates": {
- "startDays": 1,
- "startSign": "before",
- "startType": "startDate",
- "endDays": 2,
- "endSign": "after",
- "endType": "endDate"
}, - "parameterAdjust": true,
- "parameterMap": [
- {
- "childParameter": "qty",
- "parentParameters": [
- "adult"
]
}
]
}
]
}, - "ecom": true,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "timeslotSettings": {
- "displayMode": "button",
- "hideEndTime": false,
- "hideUnavailable": false
}, - "groupSettings": {
- "groupType": "parent",
- "showUnavailable": true,
- "showChildPrices": true,
- "children": [
- 1
]
}, - "integrations": {
- "myAllocator": {
- "roomId": "string",
- "accept": true
}, - "quickbooks": {
- "qbo": 1,
- "tax": 1
}, - "tripAdvisor": {
- "enabled": true,
- "roomCode": 1
}, - "xero": {
- "itemAccount": 0,
- "trackingCategories": [
- [
- "category-code"
]
]
}
}, - "location": {
- "str": "844 Courtenay St, Victoria, BC V8W 1C4, Canada",
- "lat": "48.4228937",
- "lng": "-123.3638709",
- "title": "Checkfront",
- "description": "Checkfront head office",
- "linkText": "Open in Google Maps",
- "link": "https:\\/\\/www.google.com\\/maps\\/search\\/844+Courtney+St,+Victoria,+BC+V8W+1C4,+Canada",
- "zoom": 12
}
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Response samples
- 200
{- "data": {
- "id": 1,
- "sku": "examplesku",
- "name": "Example Item",
- "type": "item",
- "stock": 1,
- "categoryId": 1,
- "categoryName": "Zipline Tours",
- "summary": "This is an example summary",
- "details": "These are details about the example",
- "emailDetails": "These are details about the example to be emailed to the customer",
- "enabled": true,
- "defaultStatus": "available",
- "unlimited": false,
- "aliasId": 2,
- "usesDateBasedInventory": true,
- "usesSimpleInventory": true,
- "weight": 0,
- "visibility": "everyone",
- "allocation": "timeslots",
- "fixedLength": 0,
- "fixedStartTime": "09:00",
- "defaultLength": 2,
- "maintenanceTime": 2,
- "priceType": "unit",
- "priceFixed": "5.00",
- "prices": [
- {
- "itemEventId": 2,
- "parameterPrices": [
- {
- "parameter": "qty",
- "price": "10.00",
- "groups": [
- {
- "min": 5,
- "max": 10,
- "groupPrice": "8.00",
- "groupPricing": "group"
}
]
}
]
}
], - "timeslots": [
- {
- "startTime": "09:00",
- "duration": "40",
- "applicableDaysOfWeek": {
- "1": true,
- "2": true,
- "3": true,
- "4": true,
- "5": true,
- "6": true,
- "7": true
}
}
], - "taxes": [
- 0
], - "rules": {
- "parameters": [
- {
- "parameter": "qty",
- "min": 1,
- "max": 10
}
], - "deposit": {
- "type": "percent",
- "amount": 50
}
}, - "parameters": [
- "qty"
], - "package": {
- "pricePercentage": 100,
- "startingPrice": "149.99",
- "children": [
- {
- "childId": 5,
- "optin": "optional",
- "hideCustomerInvoice": true,
- "pricePercentage": 50,
- "selectPackageDates": true,
- "customDates": {
- "startDays": 1,
- "startSign": "before",
- "startType": "startDate",
- "endDays": 2,
- "endSign": "after",
- "endType": "endDate"
}, - "parameterAdjust": true,
- "parameterMap": [
- {
- "childParameter": "qty",
- "parentParameters": [
- "adult"
]
}
]
}
]
}, - "ecom": true,
- "commissionType": "percent",
- "commissionCents": 500,
- "commissionPercent": 5,
- "timeslotSettings": {
- "displayMode": "button",
- "hideEndTime": false,
- "hideUnavailable": false
}, - "groupSettings": {
- "groupType": "parent",
- "showUnavailable": true,
- "showChildPrices": true,
- "children": [
- 1
]
}, - "integrations": {
- "myAllocator": {
- "roomId": "string",
- "accept": true
}, - "quickbooks": {
- "qbo": 1,
- "tax": 1
}, - "tripAdvisor": {
- "enabled": true,
- "roomCode": 1
}, - "xero": {
- "itemAccount": 0,
- "trackingCategories": [
- [
- "category-code"
]
]
}
}, - "location": {
- "str": "844 Courtenay St, Victoria, BC V8W 1C4, Canada",
- "lat": "48.4228937",
- "lng": "-123.3638709",
- "title": "Checkfront",
- "description": "Checkfront head office",
- "linkText": "Open in Google Maps",
- "link": "https:\\/\\/www.google.com\\/maps\\/search\\/844+Courtney+St,+Victoria,+BC+V8W+1C4,+Canada",
- "zoom": 12
}
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
List Classic Discounts
Searches for Item Discounts. This endpoint supports pagination. Read more on pagination here
query Parameters
startDate | string <date> Filter by the discount's start date. |
endDate | string <date> Filter by the discount's end date. |
status | string Enum: "enabled" "disabled" "all" Filter by the status of the discount. Options: all, enabled, disabled |
type | string Enum: "discounts" "vouchers" "open-discounts" Filter by various types of discounts. Options: discounts, vouchers, open-discounts |
Responses
Response samples
- 200
{- "data": [
- {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Create Classic Discount
Creates an Item Discount.
Request Body schema: application/jsonrequired
name | string The discount's name. Displayed on the invoice |
startDate | string <date-time> Discount's start date. Required if recurrence equals once or weekly. |
endDate | string <date-time> Discount's end date. Required if recurrence equals once or weekly. Set a value of 0 for no end date. |
recurrence | string Enum: "once" "weekly" "always" Recurrence setting: 'always' disables the start and end dates, while 'weekly' enables recurrenceDays, allowing for day-of-week specific discounts. |
recurrenceDays | Array of numbers The days of the week the discount should apply to |
ruleSetId | integer The rule set ID that is applied to the discount. Defaults to the default rule set, value of 1. |
amountCents | integer For type='fixed' discounts, the amount in cents |
amountPercent | number <float> For type='percent' discounts, the amount as a percentage |
code | string The discount's activation/coupon code to be used when making a booking |
type | string Enum: "fixed" "percent" How the discounted amount is calculated |
applies | string Enum: "booking" "item" "booking_pretax" How the discounted amount is applied |
enabled | boolean Disabled discounts cannot be applied to new bookings |
items | Array of numbers A list of item IDs that the discount applies to |
Responses
Request samples
- Payload
{- "name": "Early Bird Discount",
- "amountCents": 1000
}
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Get Classic Discount
Fetches an Item Discount.
path Parameters
id required | integer Discount ID to fetch |
Responses
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Disable Classic Discount
Disables an Item Discount.
path Parameters
id required | integer Discount ID to be modified |
Responses
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Update Classic Discount
Updates an Item Discount.
path Parameters
id required | integer Discount ID to be modified |
Request Body schema: application/jsonrequired
name | string The discount's name. Displayed on the invoice |
startDate | string <date-time> Discount's start date. Required if recurrence equals once or weekly. |
endDate | string <date-time> Discount's end date. Required if recurrence equals once or weekly. Set a value of 0 for no end date. |
recurrence | string Enum: "once" "weekly" "always" Recurrence setting: 'always' disables the start and end dates, while 'weekly' enables recurrenceDays, allowing for day-of-week specific discounts. |
recurrenceDays | Array of numbers The days of the week the discount should apply to |
ruleSetId | integer The rule set ID that is applied to the discount. Defaults to the default rule set, value of 1. |
amountCents | integer For type='fixed' discounts, the amount in cents |
amountPercent | number <float> For type='percent' discounts, the amount as a percentage |
code | string The discount's activation/coupon code to be used when making a booking |
type | string Enum: "fixed" "percent" How the discounted amount is calculated |
applies | string Enum: "booking" "item" "booking_pretax" How the discounted amount is applied |
enabled | boolean Disabled discounts cannot be applied to new bookings |
items | Array of numbers A list of item IDs that the discount applies to |
Responses
Request samples
- Payload
{- "amountCents": 1500
}
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Add Items to Classic Discount
Associates items with an Item Discount.
path Parameters
id required | integer Discount ID to be modified |
Request Body schema: application/jsonrequired
items required | Array of numbers A list of item IDs that the discount applies to |
Responses
Request samples
- Payload
{- "items": [
- 0
]
}
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Remove Items from Classic Discount
Disassociates items from an Item Discount.
path Parameters
id required | integer Discount ID to be modified |
Request Body schema: application/jsonrequired
items required | Array of numbers A list of item IDs that the discount applies to |
Responses
Request samples
- Payload
{- "items": [
- 0
]
}
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Add Vouchers to Classic Discount
Upload new voucher codes to an Item Discount.
path Parameters
id required | integer Discount ID to be modified |
Request Body schema: application/jsonrequired
vouchers required | Array of strings The voucher codes to upload |
Responses
Request samples
- Payload
{- "vouchers": [
- "string"
]
}
Response samples
- 200
{- "data": {
- "id": "1",
- "name": "Early Bird Discount",
- "startDate": "2015-10-30T18:59:05-05:00",
- "endDate": "2015-11-30T18:59:05-05:00",
- "recurrence": "once",
- "recurrenceDays": [
- 0
], - "ruleSetId": "2",
- "amountCents": 1000,
- "amountPercent": "12.5",
- "code": "SUMMERSAVINGS",
- "type": "fixed",
- "applies": "booking",
- "enabled": true,
- "items": [
- 0
], - "vouchersCount": 0
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}
Rule Sets are sets of restrictions which can be applied to a booking period to modify pricing or restrict bookings. For example, a 'Weekends' Rule Set might apply a minimum duration rule of 2. In combination with item events, this would ensure that bookings made on weekends would be booked for a minimum of 2 units of time.
List Rule Sets
Lists all Rule Sets. This endpoint supports pagination. Read more on pagination here
Responses
Response samples
- 200
{- "data": [
- {
- "id": 3,
- "name": "Default Rule Set",
- "rules": [
- {
- "ruleType": "CUTOFF",
- "value": 3,
- "staff": "true",
- "customer": "true",
- "strict": "true"
}
]
}
], - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { },
- "records": {
- "count": 0,
- "total": 0,
- "limit": 0,
- "offset": 0,
}
}
}
Fetch Rule Set
Fetches a single Rule Set by its ID
path Parameters
id required | integer The unique identifier of the Rule Set |
Responses
Response samples
- 200
{- "data": {
- "id": 3,
- "name": "Default Rule Set",
- "rules": [
- {
- "ruleType": "CUTOFF",
- "value": 3,
- "staff": "true",
- "customer": "true",
- "strict": "true"
}
]
}, - "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "accountId": 0,
- "request": { }
}
}