Skip to main content

Introduction

Some properties, contain multiple bookable unit types rather than a single bookable space. For example, a property might offer different bedrooms as distinct unit types, each with their own availability, pricing, and amenities. The multi-unit feature allows Zepl to represent these properties accurately. Instead of treating each unit type as a separate listing, a single listing can contain multiple units, each with its own inventory, pricing, and availability. Provider support: Multi-unit listings are currently supported for HOSTFULLY and HOSTFULLYSANDBOX integration accounts only. For all other providers, listings are treated as single-unit properties.

How It Works

Every listing in Zepl has a propertyType field that determines how units are handled:
  • SINGLE_UNIT - A traditional listing with one bookable unit. This is the default for all providers.
  • MULTI_UNIT - A property with multiple distinct units
Regardless of property type, every listing has at least one associated Unit record. For single-unit properties, this unit is auto-generated and mirrors the listing’s details. For multi-unit properties, units are created from the data provided by the PMS.

Single-Unit Properties

When a listing is synced from a PMS, Zepl automatically creates a single unit record for it. This unit:
  • Has isAutoGenerated set to true
  • Inherits its name, occupancy, pricing, and other details from the listing
  • Has its providerUnitID set to the listing’s providerID
  • Does not have unit-specific amenities or pictures (these remain at the listing level)
This auto-generated unit ensures that the availability and reservation systems work uniformly across both single-unit and multi-unit properties.

Multi-Unit Properties

For multi-unit properties synced from supported providers, Calry creates a unit record for each unit type defined in the PMS. Each unit:
  • Has isAutoGenerated set to false
  • Has its own providerUnitID from the PMS
  • Can have its own inventoryCount, indicating how many physical units of that type exist
  • Has its own amenities, pictures, pricing, and occupancy details

Unit Schema

FieldTypeDescription
idUUIDUnique identifier for the unit
providerUnitIDstringThe PMS-specific identifier for this unit type
namestringName of the unit (e.g., “Ocean View Suite”)
descriptionstringDescription of the unit
inventoryCountnumberHow many physical units of this type exist (default: 1)
maxOccupancynumberMaximum number of guests
bedroomCountnumberNumber of bedrooms
bathroomCountnumberNumber of bathrooms
basePricenumberBase price for the unit
currencystringISO currency code (e.g., “USD”)
minimumNightsnumberMinimum stay requirement
maximumNightsnumberMaximum stay requirement
roomTypestringType of room
amenitiesarrayUnit-specific amenities (null for auto-generated units)
picturesarrayUnit-specific pictures (null for auto-generated units)
isAutoGeneratedbooleanWhether this unit was auto-generated for a single-unit listing
statusstringACTIVE or INACTIVE
createdAtDateCreation timestamp
updatedAtDateLast update timestamp

Fetching Units

You can retrieve the units for a listing using the units endpoint:
GET /v1/listing/{listingId}/units
This returns an array of Unit objects for the given listing. For single-unit listings, this will return a single auto-generated unit. For multi-unit listings, it will return all unit types defined in the PMS. Units are also included in the listing response when fetching listing details.

Availability and Inventory

Availability in Zepl is tracked at the unit level, not the listing level. Each unit has its own availability calendar. For units with an inventoryCount greater than 1, the system tracks how many units of that type remain available on each date using an availableCount field. A date is only marked as unavailable when the available count reaches zero. For example, if a hotel has 5 “Deluxe Rooms” and 3 are booked on a given date, the available count for that date would be 2, and the unit would still show as available.

Quotes and Reservations

When creating quotes or reservations, the behavior differs based on property type:
  • Single-unit listings: The unitID parameter is optional. If omitted, the system automatically resolves to the auto-generated unit.
  • Multi-unit listings: The unitID parameter is required. You must specify which unit type the guest is booking. If omitted, the request will return an error.
You can obtain valid unit IDs by fetching the units for a listing as described above. When a reservation is created, the system automatically decrements the available inventory for the booked unit on the relevant dates. When a reservation is cancelled, the inventory is restored.

Listing Status and Units

When a listing is activated or deactivated, the status change is automatically cascaded to all of its associated units. This ensures that units remain in sync with their parent listing’s status. You do not need to manage unit statuses separately.