Update Units

Update Enablement Status of the Inventory

Overview

The Update Units endpoint represents the enablement step in the standard CiiRUS Partner API integration workflow. After an Agent has retrieved connected suppliers via /suppliers and discovered inventory via /units, this endpoint allows the Agent to explicitly enable or disable specific units for their integration.

This endpoint is commonly used to:

  • Enable only the subset of inventory your integration intends to display, sync, quote, or book.
  • Mirror the same unit enable/disable behavior available in the CiiRUS application (“Enabled?”).
  • Maintain an intentional inventory scope over time as suppliers add, remove, or change unit availability.

A unit’s enablement state is derived, not directly controlled by a single flag. Partners must evaluate "enabled", "agent_enabled", "supplier_enabled", "deleted", and "error.message" together to determine whether a unit is actionable for downstream workflows such as availability (/unit_calendars), pricing (/unit_quotes), and booking (/reservations).

🚧

Only units with "supplier_enabled" = true can be successfully enabled by an Agent.
If "supplier_enabled" is false, the enablement request will not grant access and the unit should be treated as supplier-restricted.

Related Supplier Configuration (Optional Context)

🚧

Note

This request mirrors the same action as toggling “Enabled?” in the CiiRUS application. By enabling a unit via the API, the Agent is indicating intent to do business for that property under the terms of their agreement with the Property Manager.

Endpoints Available

MethodEndpointDescription
PUTv2024.07.31/unitsUpdates the enablement status of one or more units for the requesting Agent.
PUTv2024.07.31/units/{unit_id}Updates the enablement status of a specific unit for the requesting Agent.

Path Parameters

Path ParameterRequired / OptionalDescription
{unit_id}RequiredUnique identifier for a unit in the inventory.

Query String Parameters

ParameterRequired / OptionalDescriptionData Type
enabledOptionalSets the enablement status for the specified /{unit_id} request (true/false). When provided, a request body is not required.boolean
👍

If you send the single-unit request using the query string, you do not need a request body.

Body Parameters

ObjectRequired / OptionalDescriptionData Type
(root)RequiredArray of unit enablement updates. Each object represents a unit to enable or disable for the requesting Agent.array[objects]
"unit_id"RequiredUnique identifier for the unit to update.int
"enabled"RequiredEnable (true) or disable (false) the unit for your integration.boolean

Response Definition

Response ItemDescriptionData Type
"units"A collection of unit objects reflecting the current state after the enable/disable update attempt. Units may include "error" when the requested state cannot be applied due to supplier/agent configuration or unit status.array[objects]
"paging"Paging metadata used to navigate through large result sets when multiple units are returned.object

"units" Object

Response Item

Description

Data Type

"unit_id"

The unique identifier for the unit. This value is the primary key used across downstream endpoints such as /unit_calendars, /unit_quotes, /unit_details, and /reservations.

int

"unit_name"

The internal name of the unit as configured by the supplier. This value is intended for operational identification and should not be treated as a guest-facing display name.The internal name of the unit as configured in CiiRUS.

string

"master_unit_id"

If this unit is a clone, this field references the original (master) unit ID. For non-cloned units, this value may be null, 0, or omitted based on context.

int

"enabled"

Effective enablement state for the unit in the current integration context. This value is only true when both "agent_enabled" and "supplier_enabled" are true. If "enabled" is false, the Agent does not have full scope to the unit for standard downstream operations.

boolean

"native"

Indicates whether the unit originates directly within the Agent’s system (true) or is sourced externally (for example, via a supplier or sync).

boolean

"agent_enabled"

Indicates whether the requesting Agent has enabled this unit for their integration. This value is controlled via the PUT /units endpoint.

boolean

"supplier_enabled"

Indicates whether the supplier has enabled this unit for agent connections. This value is controlled by the supplier in CiiRUS and cannot be overridden by either the Agent or CiiRUS Support.

boolean

"clone"

Indicates whether this unit is a cloned copy of another unit rather than a primary listing.

boolean

"deleted"

Indicates whether the unit has been deleted or deactivated by the supplier. Deleted units may still appear for reference but should not be used for booking or sync.

boolean

"online_booking_enabled"

Indicates whether online booking is enabled for this unit. If false, reservations should not be created through automated or guest-facing flows.

boolean

"booking_fence"

The minimum number of days prior to arrival that a reservation must be created. Used to prevent short-notice bookings.

int

"gap_days"

The number of required vacant nights enforced between consecutive reservations for this unit.

int

"include_mandatory_extras"

Indicates whether mandatory extras (such as required fees or services) are automatically included in pricing and quote responses.

boolean

"merchant_of_record"

Identifies which party is responsible for payment processing and financial settlement for this unit. This value influences how payments, refunds, and financial reporting should be handled by the integration.

Valid values are documented in the Units enumeration reference. See valid merchant of record values.

string

"relationship_to_unit"

Describes the Agent’s relationship to the unit within CiiRUS. This value provides context on how the unit was connected (direct ownership, supersite distribution, calendar sync, etc.) and may influence supported operations and behavior.

Valid values are documented in the Units enumeration reference. See valid relationship to unit values.

string

"timezone"

The IANA timezone identifier associated with the unit (for example, "America/New_York"). Used for arrival, departure, and calendar calculations.

string

"owner_user_id"

The unique user ID of the unit’s owner, if applicable.

int

"owner_name"

The display name of the unit’s owner, when available.

string

"management_company_rate_set_id"

Identifier of the rate set applied by the supplier for pricing calculations.

int

"management_company_user_id"

The supplier identifier who manages this unit. This value maps directly to "id" returned by /suppliers.

int

"master_management_company_user_id"

Master management company user ID when applicable (primarily relevant for clone/sync relationships).

int

"master_owner_user_id"

The owner user ID associated with the master unit when cloning or inheritance applies.

int

"master_unit_rate_set_use_nightly_floor_rates"

Indicates whether nightly floor rate logic is enforced for this unit when calculating pricing.

boolean

"rent_ready_date"

The date on which the unit became (or will become) available for rental activity (ISO 8601 format).

date-time

"community_id"

The unique ID of the community the unit belongs to. The item can be used to search and/or categorize units by location.

int

"community_name"

The human-readable name of the community or resort associated with the unit.

string

"minimum_nights_stay"

The default minimum number of nights required for a reservation when no more specific rule applies.

int

"last_unit_update_date"

Timestamp of the most recent unit-level update in CiiRUS. Commonly used for incremental inventory synchronization.

date-time

"last_reservation_update_date"

Timestamp of the most recent reservation-related update associated with this unit.

date-time

"last_agent_module_agent_update_date"

Timestamp of the most recent Agent-side configuration change affecting this unit. This field is only returned when the request includes the last_agent_module_agent_update_date filter and the unit matches that filter.

date-time

"last_agent_module_property_update_date"

Timestamp of the most recent supplier-side configuration change affecting this unit. This field is only returned when the request includes the last_agent_module_property_update_date filter and the unit matches that filter.

date-time

"allocation_on_arrival"

An object containing allocation-on-arrival configuration for this unit when the unit participates in a representative/category-based allocation workflow. May be omitted when not applicable.

object

"address"

An object containing the unit’s address details, when available. Address fields may be returned as empty strings based on supplier configuration and data visibility.

object

"bedrooms"

The total number of bedrooms configured for the unit (can be zero).

int

"bathrooms"

The total number of bathrooms configured for the unit. Supports fractional values (for example, 1.5).

float

"franchisee"

The franchisee or internal grouping label associated with the unit, when configured.

string

"airbnb"

Information and settings related to the Airbnb channel connection for this unit (informational only; not required for standard partner workflows).

object

"vrbo"

Information and settings related to the Vrbo channel connection for this unit (informational only; not required for standard partner workflows).

object

"error"

An object describing why the unit is not actionable for the current integration context, when applicable. This is not always a technical error.

object

❗️

Properties will NOT be bookable and will NOT display as active until Enabled.

"allocation_on_arrival" Object

Response ItemDescriptionData Type
"allocation_on_arrival_unit"Indicates whether this unit acts as a representative (model) unit within an allocation-on-arrival category.boolean
"allocation_on_arrival_unit_id"If this unit is representative, it references the unit ID it represents.int
"allocation_on_arrival_category"Identifier of the allocation category this unit belongs to. Units in the same category may be assigned interchangeably.int
"community_id"Community identifier associated with the allocation category..int
"enforce_allocation_on_arrival_stop_sale"If true, a stop-sale rule is enforced at the category level. If all units in the same category are unavailable (due to bookings, blocks, etc.), then your system should treat the entire category as unavailable.boolean

"address" Object

Response ItemDescriptionData Type
"address_line_1"The primary street address for the unit.string
"address_line_2"Additional address details such as suite, unit number, or building identifier, if applicable.string
"city"The city in which the unit is located, when available.string
"state_province"The state or province in which the unit is located, when available.string
"postal_code"The postal or ZIP code associated with the unit, when available.string
📘

Channel Integration Metadata ("airbnb" / "vrbo")

The "airbnb" and "vrbo" objects expose channel-specific metadata used by CiiRUS channel integrations. These fields are informational only for most API partners and are not required for standard inventory, availability, pricing, or reservation workflows. Values and behavior may change as channel integrations evolve.

"airbnb" Object

Response ItemDescriptionData Type
"host_id"Airbnb host ID associated with the unit.string
"listing_id"Airbnb listing identifier associated with the unit.string
"request_to_book_on_short_notice"Indicates whether short-notice bookings are allowed on Airbnb.boolean
"short_term_cancelation_policy"Short-term cancellation policy configured for the Airbnb listing.string
"long_term_cancelation_policy"Long-term cancellation policy configured for the Airbnb listing.string
"publish_listing"A flag indicating whether the listing is published/live on Airbnb (true) or not (false).boolean
"listing_error_message"Optional error or status message related to the Airbnb listing.string
"guests_included"Number of guests included in the base Airbnb pricing.int
"price_per_extra_person"Additional per-guest pricing configured for Airbnb.int
"allow_length_of_stay"Indicates whether length-of-stay rules are applied for Airbnb.boolean
"non_refundable_price_factor"Price adjustment factor applied to non-refundable Airbnb rates.decimal

"vrbo" Object

Response ItemDescriptionData Type
"sync"Indicates whether the unit is configured to sync with Vrbo.boolean
"booking_policy"Internal Vrbo booking-policy identifier.int
"cancellation_policy"Internal Vrbo cancellation-policy identifier.int
"pricing_mode"Internal Vrbo pricing-mode identifier.int

"error" Object

Response ItemDescriptionData Type
"message"A message describing why the unit is not actionable for the current integration context (for example, deleted, disabled, or not enabled for this Agent). Partners should treat this as an operational state indicator and reference the Error Manual for cause and resolution guidance.string

"paging" Object

Response ItemDescriptionData Type
"next_page_url"A URL that can be used to retrieve the next page of supplier results, if additional pages exist.string
"previous_page_url"A URL that can be used to retrieve the previous page of supplier results, if applicable.string
"total_page_count"The total number of available pages for the current request.int
"page"The current page number being returned.int
"page_size"The number of records being included per page.int

Sample Request

curl --location --request PUT 'https://api.ciiruspartners.com/v2024.07.31/units' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic {APIUsername:APIPassword}' \
--data '[
  {
    "enabled": true,
    "unit_id": 219264
  },
  {
    "enabled": true,
    "unit_id": 219265
  }
]'

Sample Response

{
    "units": [
        {
            "unit_id": 219264,
            "unit_name": "Test Property 1",
            "enabled": true,
            "native": false,
            "agent_enabled": true,
            "supplier_enabled": true,
            "clone": false,
            "deleted": false,
            "online_booking_enabled": true,
            "booking_fence": 1,
            "gap_days": 2,
            "include_mandatory_extras": true,
            "merchant_of_record": "management_company",
            "relationship_to_unit": "supersite_agent",
            "timezone": "America/New_York",
            "owner_user_id": 42334,
            "owner_name": "API Owner",
            "management_company_rate_set_id": 129286,
            "management_company_user_id": 42330,
            "master_unit_rate_set_use_nightly_floor_rates": false,
            "rent_ready_date": "2017-01-18T00:00:00",
            "community_id": 17511,
            "community_name": "Encore Resort at Reunion",
            "minimum_nights_stay": 1,
            "last_unit_update_date": "2025-04-30T11:45:09.757",
            "last_reservation_update_date": "2025-04-29T17:20:54.41",
            "address": {
                "address_line_1": "1012 Emmette St",
                "address_line_2": "Suite A",
                "city": "Kissimmee",
                "state_province": "Fl",
                "postal_code": "34741"
            },
            "bedrooms": 0,
            "bathrooms": 2.0,
            "franchisee": "",
            "airbnb": {
                "host_id": "431444876",
                "listing_id": "739807228214052587",
                "request_to_book_on_short_notice": false,
                "short_term_cancelation_policy": "flexible",
                "publish_listing": true
            },
            "error": {
                "message": "Unit is already enabled."
            }
        },
        {
            "unit_id": 219265,
            "unit_name": "Test Property 2",
            "enabled": true,
            "native": false,
            "agent_enabled": true,
            "supplier_enabled": true,
            "clone": false,
            "deleted": false,
            "online_booking_enabled": true,
            "booking_fence": 0,
            "gap_days": 0,
            "include_mandatory_extras": true,
            "merchant_of_record": "management_company",
            "relationship_to_unit": "supersite_agent",
            "timezone": "America/New_York",
            "owner_user_id": 42334,
            "owner_name": "API Owner",
            "management_company_rate_set_id": 129286,
            "management_company_user_id": 42330,
            "master_unit_rate_set_use_nightly_floor_rates": false,
            "rent_ready_date": "2017-01-18T00:00:00",
            "community_id": 124,
            "community_name": "Terra Verde Resort",
            "minimum_nights_stay": 2,
            "last_unit_update_date": "2025-04-30T11:45:09.757",
            "last_reservation_update_date": "2025-04-21T02:23:08.41",
            "address": {
                "address_line_1": "1014 Emmette St",
                "address_line_2": "Suite B",
                "city": "Kissimmee",
                "state_province": "Fl",
                "postal_code": "34741"
            },
            "bedrooms": 12,
            "bathrooms": 8.5
            }
        }
    ]
}


What’s Next