Introduction

Integration accounts are PMS-linked accounts created on the Zepl platform to manage Host PMS connections. When onboarding a Host, you would create an Integration Account with the required configuration.This includes the following:

  • PMS Provider (The PMS system you are integrating with)
  • PMS Credentials (Could be API Key, OAuth2, Username/Password, etc.)
  • PMS Account Identifier (The unique identifier for the Host’s PMS account on your system)

When you create an integration account, we do the following:

  1. Verify the credentials with the PMS
  2. Create a new integration account on the Zepl platform
  3. If the PMS system emits any webhook events, we subscribe to them using the subscription API.
  4. Return the integration account ID back. You should store this in your database for future API interactions.

This integration account ID represents a Host PMS connection on the Zepl platform, and you can use it to filter out the entities in your workspace.

Schema

The integration account schema is as follows:

FieldTypeDescription
idUUIDUnique Identifier of the integration account
namestringName of the integration account
workspaceIDUUIDUnique Identifier of the workspace this integration account belongs to
providerIntegrationProviderThe PMS system that this integration account is connected to. Explained below
accountIdentifierstringUnique identifier for the account from your system.
providerAccountIDstringUnique identifier for the account from the PMS system
authTypeIntegrationAccountAuthTypeAuthentication type. Explained below
authConfigJSONAuthentication configuration specific to the PMS provider. Explained below
markupPercentagenumberThe default markup percentage applied to the price of listings, quotes and reservations at integration account level.
defaultDiscountPercentagenumberThe default discount percentage applied to the price of listings, quotes and reservations at the workspace level. Overrides the workspace level setting if any.
createdAtDateIntegration Account creation timestamp
updatedAtDateIntegration Account updated timestamp

Integration Provider

Currently, we support the following PMS providers:

  • BOOKINGSYNC
  • GUESTY
  • HOSTAWAY
  • HOSTFULLY
  • HOSTIFY
  • INTERHOME
  • LODGIFY
  • OWNERREZ

When creating an integration account, you would have to pass a provider from the above list.

Integration Account Auth Type

Currently, we support the following authentication types:

  • API_KEY
  • ACCESS_TOKEN
  • OAUTH2
  • EMAIL_PASSWORD

When creating an integration account, you would have to pass an auth type from the above list.

Integration Account Auth Config

Each PMS provider has a different authentication configuration. We will look at the different configurations for each provider.

GUESTY

Auth Type: ACCESS_TOKEN

Auth Config:

{
  "client_id": "your_client_id_here",
  "client_secret": "your_client_secret_here"
}

Sample Request:

"provider": "GUESTY",
"authType": "ACCESS_TOKEN",
"authConfig": {
    "client_id": "XXX",
    "client_secret": "XXX"
}

HOSTAWAY

Auth Type: ACCESS_TOKEN

Auth Config:

{
  "account_id": "your_account_id_here",
  "api_key": "your_api_key_here"
}

Sample Request:

"provider": "HOSTAWAY",
"authType": "ACCESS_TOKEN",
"authConfig": {
    "account_id": "XXX",
    "api_key": "XXX"
},

HOSTFULLY

Hostfully supports both API Key and OAuth2 authentication.

API Key

Auth Type: API_KEY

Auth Config:

{
  "api_key": "your_api_key_here"
}

Sample Request:

"provider": "HOSTFULLY",
"authType": "API_KEY",
"authConfig": {
    "api_key": "XXX"
},
OAuth2

Auth Type: OAUTH

Auth Config:

{
  "clientRedirectURL": "your_client_redirect_url_here"
}

Sample Request:

"provider": "HOSTFULLY",
"authType": "OAUTH",
"authConfig": {
    "clientRedirectURL": "https://calry.app"
}

HOSTIFY

Auth Type: API_KEY

Auth Config:

{
  "api_key": "your_api_key_here"
}

Sample Request:

"provider": "HOSTIFY",
"authType": "API_KEY",
"authConfig": {
    "api_key": "XXX"
},

INTERHOME

Auth Type: API_KEY

Auth Config:

{
  "token": "your_token_here",
  "partner_id": "your_partner_id_here"
}

Sample Request:

"provider": "INTERHOME",
"authType": "API_KEY",
"authConfig": {
    "token": "XXX",
    "partner_id": "XXX"
},

OwnerRez

Auth Type: EMAIL_PASSWORD

Auth Config:

{
  "advertiserId": "XXX",
  "username": "XXX",
  "password": "XXX"
}

Sample Request:

"provider": "OWNERREZ",
"authType": "EMAIL_PASSWORD",
"authConfig": {
    "advertiserId": "XXX",
    "username": "XXX",
    "password": "XXX"
},

Note: The advertiserId is sometimes also referred to as the Merchant of Record (MoR) ID. This is the ID unique to your hosts. The username and password on the other hand, is common to all integration accounts in your workspace. You can obtain this by reaching out to OwnerRez. For each new connection, you should input only the advertiserId from the host, but use the same username and password when sending a request to the Zepl server.

Lodgify

Auth Type: API_KEY

Auth Config:

{
  "api_key": "XXX"
}

Sample Request:

"provider": "LODGIFY",
"authType": "API_KEY",
"authConfig": {
    "api_key": "XXX"
},

Uplisting

Auth Type: API_KEY

Auth Config:

{
  "api_key": "XXXXXXX",
  "client_id": "YYYYYYY"
}

Sample Request:

"provider": "UPLISTING",
"authType": "API_KEY",
"authConfig": {
    "api_key": "XXX",
    "client_id": "YYY"
},

The client ID can be obtained by reaching out to Uplisting. It is passed in the header X-Uplisting-Client-ID when making requests to Uplisting endpoints.