Skip to main content

Direct Legacy Channel Opening

How to open a legacy direct channel (Booking.com, Agoda, Expedia, Trip.com, and so on) among the channel_type=cms channels. Unlike Plus channels, these require channel settings and mapping.

Branching before mapping

What you do before mapping depends on the requires_cms_authorization value in the channel metadata.

requires_cms_authorizationStep before mappingExample channels
falseLook up the property on the channel side — GET /gds/vendor/channels/{channel_id}/properties/{channel_property_id}Booking.com, Agoda, Expedia, Trip.com
trueOAuth authorization — GET /gds/vendor/channels/{channel_id}/authorization; see Airbnb Authorization for the implementationAirbnb

Step by step

  1. Discover channelsGET /gds/vendor/channels
  2. Submit an ON requestPOST .../channels/{channel_id} with { "request_type": "on" }
  3. Pre-mapping step — look up the channel-side property, or run OAuth authorization, per the branch table above
  4. Per-channel settingsPATCH .../channels/{channel_id}/settings (RFC 7396 Merge Patch)
  5. MappingPATCH .../mappings (property → room type → rate plan)
  6. Push rates and business daysPOST .../ari (type: overnight)
  7. Push availabilityPOST .../ari/avails

Checklist

  • Read requires_cms_authorization from the channel metadata and branch the pre-mapping step
  • Collect candidate channel_roomtype_id and channel_rateplan_id values from the channel-side property
  • Complete property → room type → rate plan mapping
  • Airbnb: map rate plans to 0, since Airbnb has no concept of rate plans
  • Handle the processing_mode branch after the ON request (auto_approve or external_review)
  • Push rates and business days with POST .../ari (type: overnight)
  • Push availability with POST .../ari/avails (consolidated per room type, up to 730 days)
  • Availability is room-only (per room type) — send package availability aligned to standalone
Airbnb rate plan mapping

Airbnb has no concept of rate plans, so map channel_rateplan_id to 0.

Opening request body

{
"request_type": "on",
"channel_property_id": "CP-001",
"note": "Opening request agreed with the channel manager."
}
FieldDescription
request_typeon to open, off to stop
channel_property_idChannel-side property ID (optional). Can be sent when requesting a processing_mode=external_review channel such as Booking.com. Allowed only with request_type: "on"; sending it with off returns 400. If another property already uses the ID on the same channel, it returns 409. When submitted, it is applied to the property mapping at request time.
noteRequester's note (optional, up to 16,000 characters). Allowed on both on and off; use it for information the operator should see.

Extra occupancy charges per channel

Per-channel options are configured through the channel settings endpoint (RFC 7396 Merge Patch). Support for extra occupancy charges, and how they are configured, differs by channel.

ChannelExtra occupancy chargeHow it is configured
ExpediaNot supported
Booking.comNot supported
Trip.comSupportedpricing_model in the property-level settings — OBP (occupancy based) or Standard (per room). With OBP, the property's settings.extra_adult_price is included in the rate.
AgodaSupportedRates are sent per occupancy (occupancy based). Amounts for occupancy above the standard are sent to the channel, including the property's settings.extra_adult_price.
AirbnbSupportedThe property's settings.extra_adult_price is applied automatically when configured per room.
warning

Room-level channel settings (.../roomtypes/{vendor_roomtype_id}/channels/{channel_id}/settings) are Airbnb only. Calling them for another channel returns an error.

Parent rate plans (channel_parent_rateplan_id)

The rateplans object in the GET /gds/vendor/channels/{channel_id}/properties/{channel_property_id} response carries the parent rate plan ID.

  • Such a rate plan can be linked, but rates sent to it are not forwarded to the channel
  • Its rate follows the parent rate plan pointed to by channel_parent_rateplan_id and changes automatically
  • Supported on Booking.com and Agoda

Opening conditions

The full list of checks is the same as in the Plus channel guide.

Relaxed content checks on legacy channels

Legacy channels (requires_cms_authorization=false) skip the property image, category, and room image checks when opening.

Endpoints

All paths are prefixed with /gds/vendor.

Channel discovery and authorization

MethodPathDescription
GET/channelsChannel metadata
GET/properties/{vendor_property_id}/channelsChannels available for the property, with request status
GET/channels/{channel_id}/properties/{channel_property_id}Channel-side property info; the response includes channel_parent_rateplan_id
GET/channels/{channel_id}/authorizationOAuth authorization URL — only for channels with requires_cms_authorization=true (implementation guide)

Channel mapping

ScopeMethodPath
PropertyGET · PATCH/properties/{vendor_property_id}/channels/{channel_id}/mappings
Room typeGET · PATCH.../roomtypes/{vendor_roomtype_id}/channels/{channel_id}/mappings
Rate planGET · PATCH.../rateplans/{vendor_rateplan_id}/channels/{channel_id}/mappings

Opening requests

MethodPathDescription
POST/properties/{vendor_property_id}/channels/{channel_id}ON and OFF requests
GET/properties/{vendor_property_id}/channels/{channel_id}Request status and history