Capabilities
Additional features can be added on top of the Booking System API through the use of Capabilities.
A Capability is an optional, pre-defined specification that adds additional data and/or validation to a set of objects within the OBS specification. However, all capabilities marked with ** are highly recommended as they are required in order to connect to various Resellers.
A list of supported OBS capabilities can be found in the navigation bar on the left, under this document.
We recommend implementing as many capabilities as you can in your initial implementation as that will increase the number of Resellers you can connect to and reduce the amount of future development you may need.
Implementation
As Capabilities are optional, they are not by default active within the Redeam system. Therefore, it is important that you communicate which capabilities you will implement with the Integrations Team at time of development.
There are two forms of Capabilities, those which require the X-Capabilities header as they are within another object such as Supplier, Product, Availabilities OR those that are a stand-alone endpoint such as Price Schedule or Order/Cart
Clients can indicate which capabilities they support through the X-Capabilities
request header. This is a comma-delimited list; for example, a client which supports Redeam's content & policy capabilities would make a request with the header:
X-Capabilities: redeam/content,redeam/policy,redeam/pricing,redeam/location,redeam/hours
The OBS server communicates its capabilities to the client through the Capabilities array in the Products object (/suppliers/:supplierId/products
).
In the example Product below, a capabilities array is returned with the capabilities redeam/content
and redeam/policy
. In addition to the capability's identifier, a revision number and a requirement flag are provided.
The revision number is used by the client to determine compatibility. If their currently implemented version of the capability is less than the revision in the Product response, the client knows that their implementation must be upgraded before the capability may be used.
The required flag indicates to the client that a capability must be implemented and current in order to book the Product. In the example below, the redeam/policy
capability is marked as required. Because the redeam/policy
capability includes features such as sale cutoff times and cancellation flags, the booking may fail or act unpredictably if the client has not properly implemented the capability (and can thereby be informed of these additional validations / limitations on the booking).
{
// ... Rest of the Product object
"capabilities": [
{
"id": "redeam/policy",
"revision": 1,
"required": true
},
{
"id": "redeam/content",
"revision": 1,
"required": false
}
],
}