Links
Comment on page

Errors

OCTO API should respond to every request with either a 200 OK if everything went ok or 400 Bad Request if it didn't. In the case of the 400 Bad Request, the response body should similar to this:
{
"error": "INVALID_PRODUCT_ID",
"errorMessage": "The Product ID was invalid or missing",
"productId": "123"
}
Error response should always provide error and errorMessage defined as:
FIELD
DESCRIPTION
error
The error code, a table of possible error codes is shown below.
errorMessage
A human readable error message which will be translated depending on the language provided by the Accept-Language header.
Depending on the error code we also may pass additional fields which can make it easier to understand what's wrong with your request. In the example above we provide productId and pass the value that was sent in the request, indicating that the productId of 123 is not valid.

List of Error Codes

Below is a list of the error codes and a description of what each means. Further down this page we also provide an example request body for all the error codes that provide additional attributes.
CODE
DESCRIPTION
INVALID_PRODUCT_ID
Missing or invalid productId in the request
INVALID_OPTION_ID
Missing or invalid optionId in the request
INVALID_UNIT_ID
Missing or invalid unitId in the request
INVALID_AVAILABILITY_ID
Missing or invalid availabilityId in the request
INVALID_BOOKING_UUID
Missing or invalid booking uuid, or if you're confirming the booking the booking may have expired already.
BAD_REQUEST
If your request body is not formatted correctly, you have missing required fields or any of the data types are incorrect.
UNPROCESSABLE_ENTITY
If your request body is technically correct but cannot be processed for other reasons. e.g. you tried to cancel a booking after the cancellation cutoff had elapsed.
INTERNAL_SERVER_ERROR
Hopefully this never happens, but if the backend server is down or there's a network outage.
UNAUTHORIZED
You didn't send the API Key in the Authorization header to an endpoint that requires authentication.
FORBIDDEN
You sent an API Key that was invalid or has been revoked by the backend system. Or you're trying to access an endpoint/resource that you do not have access to.
As explained above it's also possible for specific error codes to have additional attributes that help you diagnose what is wrong with your request. Below are all the specific errors that contain these attributes:

INVALID_PRODUCT_ID

{
"error": "INVALID_PRODUCT_ID",
"errorMessage": "The Product ID was invalid or missing",
"productId": "123"
}

INVALID_OPTION_ID

{
"error": "INVALID_OPTION_ID",
"errorMessage": "The Option ID was invalid or missing",
"optionId": "321"
}

INVLID_UNIT_ID

{
"error": "INVALID_UNIT_ID",
"errorMessage": "The Unit ID was invalid or missing",
"unitId": "senior-123678"
}

INVALID_AVAILABAILITY_ID

{
"error": "INVALID_AVAILABILITY_ID",
"errorMessage": "The Availability ID was invalid or missing",
"availabilityId": "2020-01-01T10:30+08:00"
}