homeit PMS API (1.0)

Download OpenAPI specification:

Introduction

homeit is a property management system, designed for short-term rentals. The homeit platform allows you to manage all your properties from a single place.

The homeit PMS API allows you to manage PMS resources such as properties, room types, rate plans, bookings, message templates, and OTA channel integrations.

If you have any suggestions or questions regarding this API, please send us an email.

These documentation pages were automatically generated from an OpenAPI file, and are intended to be used by developers as detailed descriptions of our API.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC 2119] [RFC 8174] when, and only when, they appear in all capitals, as shown here.

What this API does for partners

The homeit PMS API allows partners to integrate with the homeit network.

  • Integration Platforms can manage PMS resources and automate operational workflows.
  • Channel Manager Integrations can synchronize availability, reservations, and OTA mappings.

Our API is REST-compliant and uses resource-oriented URLs and common HTTP response codes to indicate API errors.

This document is entirely written in English. Similarly, all enumerated values used in this API are also written in English.

Overview

The API is available at https://api.homeit.io/v2.

This API consists of several resource routes. Each resource route allows a user to find, create, update or remove a specific resource type.

All resource routes follow the same structure and offer similar high-level functionality. When applicable, resource routes include the following endpoints:

  • GET /{{resource}}: Find all available resources the authenticated user is allowed to access. Search query parameters may be used to filter results.
  • POST /{{resource}}: Create a new resource.
  • GET /{{resource}}/{{id}}: Get a specific resource by its ID.
  • PUT /{{resource}}/{{id}}: Update a specific resource.
  • DELETE /{{resource}}/{{id}}: Remove a specific resource.

For example, to update the name of a Key resource with ID 123456 to "HOMEIT", an HTTP PUT request should be sent to https://api.homeit.io/v2/keys/123456 with the body {"name":"HOMEIT"}.

Document Structure

This document's first sections provide details on how to use the API, including security considerations, data formats, and testing instructions.

Then, all resource routes are listed. In this section, you will find request and response formats for each resource type, as well as example responses and code snippets.

Finally, we include the data model for each resource type, along with data type requirements and example values. Fields present in a resource document but not included in the resource's data model should not be used, as they are subject to change at any moment without prior notice. Deprecated fields will be marked as such and should also not be used.

Security

HTTPS

All API requests must be made over HTTPS. Requests made over HTTP will be redirected to HTTPS.

Authentication

Most API routes require authentication using an API Key or a Bearer token. Requests made without authentication will fail with a 401 Unauthorized error.

When applicable, requests may be authenticated using one of the following methods:

  • API Key: Used as a query parameter. Example: https://api.homeit.io/v2/resource?apikey={{apikey}}
  • OAuth2: The OAuth2 flows produce tokens in the JSON Web Token format. This authentication method is fully compliant with the OAuth2 standard. These tokens can be used as a bearer token in the Authorization HTTP header. Example: Authorization: Bearer {{token}}

You can find additional information in the Authentication section.

Rate Limits

If too many requests are sent in a short amount of time, a 429 Too Many Requests error is returned until request rates return to normal. Client applications should honour the following request rate limits:

  • 100 requests per second
  • 1000 requests per minute

Pagination

All operations are automatically paginated in the following way:

{ docs: [], total: 120, limit: 10, skip: 0 }

Operations which return a single resource are still paginated, but will show total and limit values of 1.

You can define a limit on the number of documents to be returned which can range between 1 and 100 items. The default is 10 items.

Similarly, you can skip any number of documents, effectively setting the starting position by providing an index. This index should not exceed the total amount of available documents.

For example, https://api.homeit.io/v2/keys?limit=100&skip=10 returns at most 100 items, skipping the first 10 documents.

Sorting

All list operations can be sorted by any of the document's fields, as long as its assigned value is a number, a string or a date.

The sortBy parameter provides the key you want to sort by, while the order parameter tells the API in which order you want your results: asc for ascending and desc for descending.

For example, https://api.homeit.io/v2/keys?sortBy=id&order=desc returns items sorted by ID, in descending order.

Hypermedia

All operations return a collection of hypermedia links to other pages of the same request or other related requests. This collection follows the HAL format.

This behavior can be disabled by setting the hypermedia query parameter to false.

For example, https://api.homeit.io/v2/keys?hypermedia=false returns a response without hypermedia information.

Formatting

JSON

All API responses are given in JSON format. All request bodies should also be provided as JSON.

Request body content type should be application/json. Response body content type will always be application/json+hal unless otherwise specified.

Dates

All dates follow the ISO 8601 format standard.

Errors

In case of internal or external error, the following HTTP error codes will be returned:

  • 401 Unauthorized: Request lacks valid authentication credentials.
  • 403 Forbidden: Access to requested resource is not allowed.
  • 404 Not Found: Requested resource could not be found. Also returned if the requested route could not be found.
  • 405 Method Not Allowed: Request HTTP method is not allowed on the requested route or resource.
  • 409 Conflict: Requested data changes create conflicts with current state of resource.
  • 422 Unprocessable Entity: Payload validation failed. Usually accompanied by a detailed explanation message.
  • 429 Too Many Requests: Request rate exceeded rate limits.

Other 4XX and 5XX error codes may be returned upon malformed request payload or gateway errors.

During normal operation, the following HTTP codes will be returned:

  • 201 Created: Successful resource creation operations.
  • 200 OK: All other successful operations.

Testing

All operations accept a dry boolean query parameter. When testing, you can enable dry-run mode by setting this parameter to true.

In this mode, side-effects such as database writes are disabled, but responses are still returned as normal.

For example, an update request to https://api.homeit.io/v2/keys/123?dry=true would return the updated document, but no changes would be persisted.

Feedback

If you would like to report an error or have any suggestions or questions regarding this API, please send us an email to api@homeit.io. Any feedback is greatly appreciated. Please use English for all communications.

Changelog

2026-07-05

  • First release of this documentation page.

Properties

Operations related to Property resources.

Get all Properties.

Get all PMS Properties you have access to. You may use filters to narrow your search.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

description
string
Example: description=Example

The resource description, or part of it. Case-insensitive.

property
Array of integers <int64> [ items <int64 > ]

A list of Core Property numeric IDs.

door
Array of integers <int64> [ items <int64 > ]

A list of Core Door numeric IDs.

currency
Array of strings

Filter by currency.

type
Array of strings

Filter by property type.

isCreateKey
boolean

Filter by automatic key creation status.

provider
Array of strings
Items Enum: "homeit" "channex"
Example: provider=channex

Filter by provider.

isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Request samples

curl -XGET "https://api.homeit.io/v2/properties?name=Lisbon&provider=channex" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer {{token}}"

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Property.

Create a new PMS Property.

Authorizations:
oauthapikey
Request Body schema: application/json
required

Property object.

name
required
string
description
string
Default: ""
property
required
integer <int64>

Core Property numeric ID.

doors
Array of integers <int64> <= 100 items [ items <int64 > ]
currency
string
type
string
Enum: "apart_hotel" "apartment" "boat" "camping" "capsule_hotel" "chalet" "country_house" "farm_stay" "guest_house" "holiday_home" "holiday_park" "homestay" "hostel" "hotel" "inn" "lodge" "motel" "resort" "riad" "ryokan" "tent" "villa"
isCreateKey
boolean
Default: true
template
string
provider
string
Enum: "homeit" "channex"
isActive
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "name": "Lisbon Downtown Apartment",
  • "description": "Primary PMS property for downtown reservations.",
  • "property": 1201,
  • "doors": [
    ],
  • "currency": "EUR",
  • "type": "apartment",
  • "isCreateKey": true,
  • "template": "64f8f1a4c4e2b977f7b4d501",
  • "provider": "channex",
  • "isActive": true
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Property.

Get a single PMS Property by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Property.

Update a PMS Property you have access to.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required

Property object.

name
string
description
string
property
integer <int64>

Core Property numeric ID.

doors
Array of integers <int64> <= 100 items [ items <int64 > ]
currency
string
type
string
Enum: "apart_hotel" "apartment" "boat" "camping" "capsule_hotel" "chalet" "country_house" "farm_stay" "guest_house" "holiday_home" "holiday_park" "homestay" "hostel" "hotel" "inn" "lodge" "motel" "resort" "riad" "ryokan" "tent" "villa"
isCreateKey
boolean
template
string
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Lisbon Downtown Apartment Updated",
  • "doors": [
    ],
  • "isCreateKey": false
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Property.

Delete a PMS Property you have access to.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Room Types

Operations related to Room Type resources.

Get all Room Types.

Get all PMS Room Types you have access to.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

description
string
Example: description=Example

The resource description, or part of it. Case-insensitive.

property
Array of strings

A list of Property ObjectIds.

maxAvailabilityLower
integer >= 0
maxAvailabilityHigher
integer >= 0
maxAdultsLower
integer >= 0
maxAdultsHigher
integer >= 0
maxChildrenLower
integer >= 0
maxChildrenHigher
integer >= 0
provider
Array of strings
Items Enum: "homeit" "channex"
Example: provider=channex

Filter by provider.

isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Room Type.

Create a new PMS Room Type.

Authorizations:
oauthapikey
Request Body schema: application/json
required
name
required
string
description
string
Default: ""
property
required
string
maxAvailability
integer >= 0
Default: 1
maxAdults
required
integer >= 0
maxChildren
integer >= 0
provider
string
Enum: "homeit" "channex"
isActive
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "name": "Deluxe Suite",
  • "description": "Main suite category.",
  • "property": "64f8f1a4c4e2b977f7b4d001",
  • "maxAvailability": 3,
  • "maxAdults": 2,
  • "maxChildren": 1,
  • "provider": "channex",
  • "isActive": true
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Room Type.

Get a single PMS Room Type by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Room Type.

Update a PMS Room Type.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required
name
string
description
string
property
string
maxAvailability
integer >= 0
maxAdults
integer >= 0
maxChildren
integer >= 0
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "maxAvailability": 4,
  • "maxChildren": 2
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Room Type.

Delete a PMS Room Type.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Rate Plans

Operations related to Rate Plan resources.

Get all Rate Plans.

Get all PMS Rate Plans you have access to.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

description
string
Example: description=Example

The resource description, or part of it. Case-insensitive.

room
Array of strings

A list of Room Type ObjectIds.

rateLower
integer
rateHigher
integer
currency
Array of strings
meal
Array of strings
provider
Array of strings
Items Enum: "homeit" "channex"
Example: provider=channex

Filter by provider.

isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Rate Plan.

Create a new PMS Rate Plan.

Authorizations:
oauthapikey
Request Body schema: application/json
required
name
required
string
description
string
room
required
string
rate
required
integer
rules
Array of objects
currency
string
meal
string
provider
string
Enum: "homeit" "channex"
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Standard Flexible",
  • "description": "Main public rate.",
  • "room": "64f8f1a4c4e2b977f7b4d101",
  • "rate": 12000,
  • "currency": "EUR",
  • "meal": "breakfast",
  • "provider": "channex",
  • "isActive": true
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Rate Plan.

Get a single PMS Rate Plan by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Rate Plan.

Update a PMS Rate Plan.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required
name
string
description
string
room
string
rate
integer
rules
Array of objects
currency
string
meal
string
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "rate": 12500,
  • "meal": "none"
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Rate Plan.

Delete a PMS Rate Plan.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Channels

Operations related to Channel resources.

Get all Channels.

Get all PMS OTA Channels you have access to.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

organization
Array of integers <int64> [ items <int64 > ]
ota
Array of strings
Items Enum: "airbnb" "bookingcom"
otaUrl
Array of strings
isSync
boolean
provider
Array of strings
Items Enum: "homeit" "channex"
Example: provider=channex

Filter by provider.

isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Channel.

Create a new PMS OTA Channel.

Authorizations:
oauthapikey
Request Body schema: application/json
required
name
required
string
ota
required
string
Enum: "airbnb" "bookingcom"
otaListing
string

Required for Booking.com channel creation.

isSync
boolean
Default: false
provider
string
Enum: "homeit" "channex"
isActive
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "name": "Airbnb Main Account",
  • "ota": "airbnb",
  • "isSync": true,
  • "provider": "channex",
  • "isActive": true
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Channel.

Get a single PMS OTA Channel by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Channel.

Update a PMS OTA Channel.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required
name
string
isSync
boolean
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "isSync": false,
  • "isActive": false
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Channel.

Delete a PMS OTA Channel.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Bookings

Operations related to Booking resources.

Get all Bookings.

Get all PMS Bookings you have access to.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

property
Array of strings
room
Array of strings
rate
Array of strings
isBlockedPeriod
boolean
checkInBefore
string <date-time>
checkInAfter
string <date-time>
checkOutBefore
string <date-time>
checkOutAfter
string <date-time>
ota
Array of strings
key
Array of integers <int64> [ items <int64 > ]

A list of Core Key numeric IDs.

isPaid
boolean
isSendMessage
boolean
isMessageSent
boolean
status
Array of strings
Items Enum: "confirmed" "canceled"
provider
Array of strings
Items Enum: "homeit" "channex"
Example: provider=channex

Filter by provider.

isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Booking.

Create a new PMS Booking.

Authorizations:
oauthapikey
Request Body schema: application/json
required
name
required
string
property
required
string
room
string

Optional room. When omitted, the service resolves a room from the property and rate data.

rate
string

Optional rate. When omitted, the service resolves one for the selected room.

isBlockedPeriod
boolean
Default: false
checkIn
required
string <date-time>
checkOut
required
string <date-time>
adults
integer
children
integer
Default: 0
isCreateKey
boolean
Default: true

Create a linked Core Key automatically when possible.

isPaid
boolean
Default: true
isSendMessage
boolean
Default: true
isMessageSent
boolean
Default: false
status
string
Default: "confirmed"
Enum: "confirmed" "canceled"
provider
string
Default: "homeit"
Value: "homeit"
isActive
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe Reservation",
  • "property": "64f8f1a4c4e2b977f7b4d001",
  • "room": "64f8f1a4c4e2b977f7b4d101",
  • "rate": "64f8f1a4c4e2b977f7b4d201",
  • "checkIn": "2026-08-15T15:00:00.000Z",
  • "checkOut": "2026-08-18T11:00:00.000Z",
  • "adults": 2,
  • "children": 1,
  • "isCreateKey": true,
  • "isPaid": true,
  • "isSendMessage": true,
  • "status": "confirmed"
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Booking.

Get a single PMS Booking by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Booking.

Update a PMS Booking.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required
name
string
checkIn
string <date-time>
checkOut
string <date-time>
adults
integer
children
integer
isPaid
boolean
isSendMessage
boolean
isMessageSent
boolean
status
string
Value: "canceled"
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "status": "canceled"
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Booking.

Delete a PMS Booking.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Message Templates

Operations related to Message Template resources.

Get all Message Templates.

Get all PMS Message Templates you have access to.

Authorizations:
oauthapikey
query Parameters
id
Array of strings[ items^[a-fA-F0-9]{24}$ ]
Example: id=64f8f1a4c4e2b977f7b4d001

A list of PMS resource MongoDB ObjectIds.

name
string
Example: name=Example

The resource name, or part of it. Case-insensitive.

description
string
Example: description=Example

The resource description, or part of it. Case-insensitive.

organization
Array of integers <int64> [ items <int64 > ]
isWaitPayment
boolean
isActive
boolean
Example: isActive=true

Filter by active status.

createdBefore
string <date-time>
Example: createdBefore=2026-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

createdAfter
string <date-time>
Example: createdAfter=2025-01-01T00:00:00.000Z

Filter by creation date. Format MUST comply with ISO 8601.

updatedBefore
string <date-time>
Example: updatedBefore=2026-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

updatedAfter
string <date-time>
Example: updatedAfter=2025-01-01T00:00:00.000Z

Filter by last update date. Format MUST comply with ISO 8601.

limit
integer [ 1 .. 100 ]
Default: 10
Example: limit=25

Maximum number of resources to return.

skip
integer >= 0
Default: 0
Example: skip=10

Number of resources to skip.

sortBy
string
Example: sortBy=dateCreated

Field used for sorting.

order
string
Default: "asc"
Enum: "asc" "desc"
Example: order=desc

Sort order.

dry
boolean
Default: false
Example: dry=true

Enable dry-run mode, for testing.

hypermedia
boolean
Default: true

Disable hypermedia links in response.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 2,
  • "limit": 10,
  • "skip": 0,
  • "success": true
}

Create a Message Template.

Create a new PMS Message Template.

Authorizations:
oauthapikey
Request Body schema: application/json
required
name
required
string
description
string
message
required
string <= 10000 characters
isWaitPayment
boolean
sendBeforeMinutes
integer >= 0
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Check-in Instructions",
  • "description": "Sent before guest arrival.",
  • "message": "<p>Hello {{guestName}}, your access details will be sent shortly.</p>",
  • "isWaitPayment": false,
  • "sendBeforeMinutes": 1440,
  • "isActive": true
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Get a Message Template.

Get a single PMS Message Template by ID.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Update a Message Template.

Update a PMS Message Template.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Request Body schema: application/json
required
name
string
description
string
message
string <= 10000 characters
isWaitPayment
boolean
sendBeforeMinutes
integer >= 0
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "sendBeforeMinutes": 720
}

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Delete a Message Template.

Delete a PMS Message Template.

Authorizations:
oauthapikey
path Parameters
id
required
string^[a-fA-F0-9]{24}$
Example: 64f8f1a4c4e2b977f7b4d001

A PMS resource MongoDB ObjectId.

Responses

Response samples

Content type
application/json+hal
{
  • "docs": [
    ],
  • "total": 1,
  • "limit": 1,
  • "skip": 0,
  • "success": true
}

Property

id
string

The Property MongoDB ObjectId.

name
string

The Property name.

description
string

The Property description.

organization
integer <int64>

The owning organization numeric ID.

property
integer <int64>

The related Core Property numeric ID.

doors
Array of integers <int64> [ items <int64 > ]

Core Door numeric IDs used when creating booking keys automatically.

currency
string

Property currency in ISO 4217 format.

type
string
Enum: "apart_hotel" "apartment" "boat" "camping" "capsule_hotel" "chalet" "country_house" "farm_stay" "guest_house" "holiday_home" "holiday_park" "homestay" "hostel" "hotel" "inn" "lodge" "motel" "resort" "riad" "ryokan" "tent" "villa"

Property type used for channel-manager synchronization.

isCreateKey
boolean

Should new bookings create homeit keys automatically?

template
string or null

Linked Message Template ObjectId.

provider
string
Enum: "homeit" "channex"

Synchronization provider.

providerId
string or null

External provider identifier used by the synchronization provider.

isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>

Numeric ID of the user who created the resource.

dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>

Numeric ID of the user who last updated the resource.

deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

Numeric ID of the user who deleted the resource.

PMS Property example

{
  • "id": "64f8f1a4c4e2b977f7b4d001",
  • "name": "Lisbon Downtown Apartment",
  • "description": "Primary PMS property for downtown reservations.",
  • "organization": 42,
  • "property": 1201,
  • "doors": [
    ],
  • "currency": "EUR",
  • "type": "apartment",
  • "isCreateKey": true,
  • "template": "64f8f1a4c4e2b977f7b4d501",
  • "provider": "channex",
  • "providerId": "chx_property_123",
  • "isActive": true,
  • "dateCreated": "2026-01-10T09:00:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-11T10:30:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}

Room Type

id
string

The Room Type MongoDB ObjectId.

name
string

The Room Type name.

description
string

The Room Type description.

property
string

Parent Property ObjectId.

maxAvailability
integer

Number of units available for sale.

maxAdults
integer

Maximum number of adults.

maxChildren
integer

Maximum number of children.

provider
string
Enum: "homeit" "channex"

Synchronization provider.

providerId
string or null

External provider identifier.

isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>
dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>
deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

PMS Room Type example

{
  • "id": "64f8f1a4c4e2b977f7b4d101",
  • "name": "Deluxe Suite",
  • "description": "Main suite category.",
  • "property": "64f8f1a4c4e2b977f7b4d001",
  • "maxAvailability": 3,
  • "maxAdults": 2,
  • "maxChildren": 1,
  • "provider": "channex",
  • "providerId": "chx_room_456",
  • "isActive": true,
  • "dateCreated": "2026-01-10T09:10:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-11T10:35:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}

Rate Plan

id
string

The Rate Plan MongoDB ObjectId.

name
string
description
string
room
string

Parent Room Type ObjectId.

rate
integer

Base rate amount in the configured currency minor units.

Array of objects or objects or objects or objects

Optional rate adjustment rules.

currency
string
meal
string or null
Enum: "none" "all_inclusive" "breakfast" "lunch" "dinner" "american" "bed_and_breakfast" "buffet_breakfast" "carribean_breakfast" "continental_breakfast" "english_breakfast" "european_plan" "family_plan" "full_board" "full_breakfast" "half_board" "room_only" "self_catering" "bermuda" "dinner_bed_and_breakfast_plan" "family_american" "breakfast_and_lunch" "lunch_and_dinner"
provider
string
Enum: "homeit" "channex"
providerId
string or null
isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>
dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>
deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

PMS Rate Plan example

{
  • "id": "64f8f1a4c4e2b977f7b4d201",
  • "name": "Standard Flexible",
  • "description": "Main public rate.",
  • "room": "64f8f1a4c4e2b977f7b4d101",
  • "rate": 12000,
  • "rules": [
    ],
  • "currency": "EUR",
  • "meal": "breakfast",
  • "provider": "channex",
  • "providerId": "chx_rate_789",
  • "isActive": true,
  • "dateCreated": "2026-01-10T09:20:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-11T10:40:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}

Channel

id
string

The Channel MongoDB ObjectId.

name
string
organization
integer <int64>
ota
string
Enum: "airbnb" "bookingcom"
otaUrl
string or null

External URL used to complete channel connection when applicable.

otaToken
string or null

Temporary token used during external connection flows.

otaListing
string or null

OTA listing or hotel identifier used by the provider.

Array of objects
isSync
boolean

Whether future reservations should be loaded automatically after mapping.

provider
string
Enum: "homeit" "channex"
providerId
string or null
isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>
dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>
deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

PMS Channel example

{
  • "id": "64f8f1a4c4e2b977f7b4d601",
  • "name": "Airbnb Main Account",
  • "organization": 42,
  • "ota": "airbnb",
  • "otaToken": null,
  • "otaListing": null,
  • "mapping": [
    ],
  • "isSync": true,
  • "provider": "channex",
  • "providerId": "chx_channel_321",
  • "isActive": true,
  • "dateCreated": "2026-01-15T09:00:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-15T09:30:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}

Booking

id
string

The Booking MongoDB ObjectId.

name
string

Booking or guest-facing label.

property
string

Property ObjectId.

room
string

Room Type ObjectId.

rate
string or null

Rate Plan ObjectId.

isBlockedPeriod
boolean

Whether this booking represents a blocked calendar period.

checkIn
string <date-time>
checkOut
string <date-time>
ota
string or null

OTA source identifier.

adults
integer
children
integer
key
integer or null <int64>

Linked Core Key numeric ID.

isPaid
boolean
isSendMessage
boolean
isMessageSent
boolean
status
string
Enum: "confirmed" "canceled"
provider
string
Enum: "homeit" "channex"
providerId
string or null
isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>
dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>
deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

PMS Booking example

{
  • "id": "64f8f1a4c4e2b977f7b4d301",
  • "name": "John Doe Reservation",
  • "property": "64f8f1a4c4e2b977f7b4d001",
  • "room": "64f8f1a4c4e2b977f7b4d101",
  • "rate": "64f8f1a4c4e2b977f7b4d201",
  • "isBlockedPeriod": false,
  • "checkIn": "2026-08-15T15:00:00.000Z",
  • "checkOut": "2026-08-18T11:00:00.000Z",
  • "ota": "airbnb",
  • "adults": 2,
  • "children": 1,
  • "key": 5001,
  • "isPaid": true,
  • "isSendMessage": true,
  • "isMessageSent": false,
  • "status": "confirmed",
  • "provider": "channex",
  • "providerId": "chx_booking_555",
  • "isActive": true,
  • "dateCreated": "2026-02-10T12:00:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-10T12:05:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}

Message Template

id
string

The Message Template MongoDB ObjectId.

name
string
description
string
organization
integer <int64>
message
string

Sanitized template body used when sending guest messages.

isWaitPayment
boolean

Whether the message should wait for payment confirmation.

sendBeforeMinutes
integer

Minimum number of minutes before check-in required to send the message.

isActive
boolean (isActive)

Is the resource active?

dateCreated
string <date-time> (dateCreated)

Creation date and time. Format MUST comply with ISO 8601.

createdBy
integer <int64>
dateUpdated
string <date-time> (dateUpdated)

Last update date and time. Format MUST comply with ISO 8601.

updatedBy
integer <int64>
deleted
boolean (deleted)

Is the resource deleted?

deletedAt
string <date-time> (deletedAt)

Deletion date and time. Format MUST comply with ISO 8601.

deletedBy
integer or null <int64>

PMS Message Template example

{
  • "id": "64f8f1a4c4e2b977f7b4d501",
  • "name": "Check-in Instructions",
  • "description": "Sent before guest arrival.",
  • "organization": 42,
  • "message": "<p>Hello {{guestName}}, your access details will be sent shortly.</p>",
  • "isWaitPayment": false,
  • "sendBeforeMinutes": 1440,
  • "isActive": true,
  • "dateCreated": "2026-01-09T08:00:00.000Z",
  • "createdBy": 7,
  • "dateUpdated": "2026-02-09T08:15:00.000Z",
  • "updatedBy": 7,
  • "deleted": false
}