Skip to content

TMS Gateway API (1.0.0-SNAPSHOT)

API for registering operators and managing their TMS credentials. Once configured, operators and their venues become available for booking operations via the Bookings API.

This API provides endpoints to:

  • Register, retrieve, update, and deregister operators
  • Manage TMS credentials for each operator

Supported TMS Systems:

  • Collins (CO) - BearerToken authentication
  • SevenRooms (SR) - ClientCredentials authentication
  • Zonal (ZO) - BaseAuth authentication

Authentication Fields by TMS Type:

TMSAuth TypeRequired Fields
Collins (CO)BearerTokenbearer, externalOperatorId
SevenRooms (SR)ClientCredentialsclientId, secretId
Zonal (ZO)BaseAuthclientId, secretId
Download OpenAPI description
Languages
Servers
Production
https://api.bookabletech.com
Sandbox
https://api-sandbox.bookabletech.com

Operators are the hospitality businesses (e.g. Stonegate, Nightcap, Big Table Group) whose venues you want to make bookable through your integration. Registering an operator is the first step before connecting any TMS credentials.

Operations

Credentials connect a registered operator to their TMS. Each credential set tells Bookable how to authenticate with a specific TMS on the operator's behalf — unlocking real-time availability and booking capability for that operator's venues. An operator may hold credentials for multiple TMS systems (e.g. Collins for some venues, SevenRooms for others).

Operations

List TMS credentials for an operator

Request

Retrieve all TMS credentials associated with a specific operator.

Security
Production(Required scopes:
venue-group:read
)
or Sandbox(Required scopes:
venue-group:read
)
Path
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
curl -i -X GET \
  https://api.bookabletech.com/operators/1/tms-credentials \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

List of TMS credentials successfully retrieved

Bodyapplication/jsonArray [
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
tmsNamestringrequired

The name of the TMS

Example: "Collins"
tmsSlugstringrequired

The slug identifier of the TMS

Example: "CO"
activebooleanrequired

Whether this TMS credentials is currently active

Example: true
createdAtstring(date-time)

Timestamp when the connection was created

Example: "2025-01-15T10:30:00Z"
updatedAtstring(date-time)

Timestamp when the connection was last updated

Example: "2025-02-10T14:20:00Z"
]
Response
application/json
[ { "operatorId": 1, "tmsId": 1, "tmsName": "Collins", "tmsSlug": "CO", "active": true, "createdAt": "2025-01-15T10:30:00Z", "updatedAt": "2025-02-10T14:20:00Z" }, { "operatorId": 1, "tmsId": 2, "tmsName": "SevenRooms", "tmsSlug": "SR", "active": true, "createdAt": "2025-01-20T09:15:00Z", "updatedAt": "2025-01-20T09:15:00Z" } ]

Create TMS credentials for an operator

Request

Create a new TMS credentials to link a table management system to an operator with the necessary credentials.

Security
Production(Required scopes:
venue-group:update
)
or Sandbox(Required scopes:
venue-group:update
)
Path
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
Bodyapplication/jsonrequired
tmsSlugstringrequired

The slug identifier of the TMS to connect. Supported values:

  • CO - Collins (uses BearerToken authentication)
  • SR - SevenRooms (uses ClientCredentials authentication)
  • ZO - Zonal (uses BaseAuth authentication)
Enum"CO""SR""ZO"
Example: "CO"
clientIdstring or null

Client ID for authentication. Required for BaseAuth and ClientCredentials TMS types.

Example: "44966392-f2d4-4929-8c9a-e87a0e7dc856"
secretIdstring or null

Client secret for authentication. Required for BaseAuth and ClientCredentials TMS types.

Example: "LjjXs5$3M%Btx@tt"
bearerstring or null

Bearer token for authentication. Required for BearerToken TMS type (e.g., Collins).

Example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
externalOperatorIdstringrequired

External identifier for the operator in the TMS system

Example: "514ada610df690b6770000fd"
activebooleanrequired

Whether this TMS credentials should be active

Example: true
curl -i -X POST \
  https://api.bookabletech.com/operators/1/tms-credentials \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "tmsSlug": "CO",
    "clientId": "44966392-f2d4-4929-8c9a-e87a0e7dc856",
    "secretId": "LjjXs5$3M%Btx@tt",
    "bearer": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
    "externalOperatorId": "514ada610df690b6770000fd",
    "active": true
  }'

Responses

TMS credentials successfully created

Bodyapplication/json
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
tmsNamestringrequired

The name of the TMS

Example: "Collins"
tmsSlugstringrequired

The slug identifier of the TMS

Example: "CO"
clientIdstring or null

Client ID used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "44966392-f2d4-4929-8c9a-e87a0e7dc856"
secretIdstring or null

Client secret used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "LjjXs5$3M%Btx@tt"
bearerstring or null

Bearer token used for authentication with the TMS. Required for BearerToken auth type (e.g., Collins).

Example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
externalOperatorIdstringrequired

External identifier for the operator in the TMS system. Format varies by TMS (hex string for Collins, UUID for others, or empty string).

Example: "514ada610df690b6770000fd"
activebooleanrequired

Whether this TMS credentials is currently active

Example: true
createdAtstring(date-time)

Timestamp when the connection was created

Example: "2025-01-15T10:30:00Z"
updatedAtstring(date-time)

Timestamp when the connection was last updated

Example: "2025-02-10T14:20:00Z"
Response
application/json
{ "operatorId": 1, "tmsId": 1, "tmsName": "Collins", "tmsSlug": "CO", "clientId": null, "secretId": null, "bearer": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...", "externalOperatorId": "514ada610df690b6770000fd", "active": true, "createdAt": "2025-02-19T10:30:00Z", "updatedAt": "2025-02-19T10:30:00Z" }

Request

Retrieve the details of a specific TMS credentials for an operator, including credentials and settings.

Security
Production(Required scopes:
venue-group:update
)
or Sandbox(Required scopes:
venue-group:update
)
Path
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
curl -i -X GET \
  https://api.bookabletech.com/operators/1/tms-credentials/1 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

TMS credentials successfully retrieved

Bodyapplication/json
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
tmsNamestringrequired

The name of the TMS

Example: "Collins"
tmsSlugstringrequired

The slug identifier of the TMS

Example: "CO"
clientIdstring or null

Client ID used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "44966392-f2d4-4929-8c9a-e87a0e7dc856"
secretIdstring or null

Client secret used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "LjjXs5$3M%Btx@tt"
bearerstring or null

Bearer token used for authentication with the TMS. Required for BearerToken auth type (e.g., Collins).

Example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
externalOperatorIdstringrequired

External identifier for the operator in the TMS system. Format varies by TMS (hex string for Collins, UUID for others, or empty string).

Example: "514ada610df690b6770000fd"
activebooleanrequired

Whether this TMS credentials is currently active

Example: true
createdAtstring(date-time)

Timestamp when the connection was created

Example: "2025-01-15T10:30:00Z"
updatedAtstring(date-time)

Timestamp when the connection was last updated

Example: "2025-02-10T14:20:00Z"
Response
application/json
{ "operatorId": 1, "tmsId": 1, "tmsName": "Collins", "tmsSlug": "CO", "clientId": null, "secretId": null, "bearer": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...", "externalOperatorId": "514ada610df690b6770000fd", "active": true, "createdAt": "2025-01-15T10:30:00Z", "updatedAt": "2025-02-10T14:20:00Z" }

Request

Update the credentials and settings of an existing TMS credentials for an operator.

Security
Production(Required scopes:
venue-group:update
)
or Sandbox(Required scopes:
venue-group:update
)
Path
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
Bodyapplication/jsonrequired
clientIdstring or null

Client ID for authentication. Required for BaseAuth and ClientCredentials TMS types.

Example: "44966392-f2d4-4929-8c9a-e87a0e7dc856"
secretIdstring or null

Client secret for authentication. Required for BaseAuth and ClientCredentials TMS types.

Example: "LjjXs5$3M%Btx@tt"
bearerstring or null

Bearer token for authentication. Required for BearerToken TMS type (e.g., Collins).

Example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
externalOperatorIdstringrequired

External identifier for the operator in the TMS system

Example: "514ada610df690b6770000fd"
activebooleanrequired

Whether this TMS credentials should be active

Example: true
curl -i -X PUT \
  https://api.bookabletech.com/operators/1/tms-credentials/1 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "clientId": "44966392-f2d4-4929-8c9a-e87a0e7dc856",
    "secretId": "LjjXs5$3M%Btx@tt",
    "bearer": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
    "externalOperatorId": "514ada610df690b6770000fd",
    "active": true
  }'

Responses

TMS credentials successfully updated

Bodyapplication/json
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
tmsNamestringrequired

The name of the TMS

Example: "Collins"
tmsSlugstringrequired

The slug identifier of the TMS

Example: "CO"
clientIdstring or null

Client ID used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "44966392-f2d4-4929-8c9a-e87a0e7dc856"
secretIdstring or null

Client secret used for authentication with the TMS. Required for BaseAuth and ClientCredentials auth types.

Example: "LjjXs5$3M%Btx@tt"
bearerstring or null

Bearer token used for authentication with the TMS. Required for BearerToken auth type (e.g., Collins).

Example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
externalOperatorIdstringrequired

External identifier for the operator in the TMS system. Format varies by TMS (hex string for Collins, UUID for others, or empty string).

Example: "514ada610df690b6770000fd"
activebooleanrequired

Whether this TMS credentials is currently active

Example: true
createdAtstring(date-time)

Timestamp when the connection was created

Example: "2025-01-15T10:30:00Z"
updatedAtstring(date-time)

Timestamp when the connection was last updated

Example: "2025-02-10T14:20:00Z"
Response
application/json
{ "operatorId": 1, "tmsId": 1, "tmsName": "Collins", "tmsSlug": "CO", "clientId": null, "secretId": null, "bearer": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...", "externalOperatorId": "514ada610df690b6770000fd", "active": true, "createdAt": "2025-01-15T10:30:00Z", "updatedAt": "2025-02-19T16:45:00Z" }

Request

Remove a TMS credentials from an operator.

Security
Production(Required scopes:
venue-group:update
)
or Sandbox(Required scopes:
venue-group:update
)
Path
operatorIdintegerrequired

The unique identifier of the operator

Example: 1
tmsIdintegerrequired

The unique identifier of the TMS

Example: 1
curl -i -X DELETE \
  https://api.bookabletech.com/operators/1/tms-credentials/1 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

TMS credentials successfully deleted