Skip to main content

Manage Stay Controls

SynXis CRS
Availability
Stay Restrictions
REST API
CRS Administration

What is it?

The Manage Stay Control API endpoints allow a hotelier to create, edit, delete, and retrieve stay controls (also known as stay restrictions) in SynXis CRS for desired stay dates at the following levels:

  • hotel
  • product
  • room
  • room category
  • rate
  • rate category
  • rate category and room
  • rate category and room category
  • room upsell and coupon offer

The default rate stay controls are not date sensitive. Once set, they apply for all dates.

You can use stay controls to execute revenue management strategies through restrictions that are commonly used, such as:

  • Closing a hotel, room type, or rate.
  • Establishing minimum lengths of stay.
  • Restricting arrival or departure dates, oversell limits, etc.

You can configure these stay controls as channel agnostic or channel specific.

 

Before You Begin

  • You must authenticate before you can use this API. For full instructions, see Get a Token for REST APIs.
  • At any time, you can go to this API's Reference Documentation tab, where you can make test calls with the following endpoints.

How to use

This section covers the endpoints for this API and examples of how to use them.

GET stay controls

This endpoint enables you to retrieve information about stay controls.

[GET] /v1/api/admin/product/stayControls

Query Parameters

The following table describes the elements that you can include when you query this endpoint:

ElementDescriptionTypeRequired?
hotelId

The unique ID for a single hotel property in CRS.

To retrieve information about more than one hotel, you can make this an array of IDs.

Example: List [ "11113", "13098" ]

stringRequired
chainId

The unique ID for a hotel chain or management group in CRS.

Example: 12723

integerOptional
startDate

The start date for the stay control that you want to retrieve.

Example: 2025-11-27 (yyyy-mm-dd)

stringRequired
endDate

The end date for the stay control that you want to retrieve.

Example: 2025-11-30 (yyyy-mm-dd)

stringRequired
channelCode

The CRS booking channel code assigned to the stay control that you want to retrieve.

To retrieve information based on more than one channel, you can make this an array of channel codes.

Example: List [ "WEB", "BE" ]

stringOptional
controlType

The type of stay control that you want to retrieve. If you leave this empty, all Stay Controls will be evaluated.

Available values: IsClosed, NoArrival, NoDeparture, MinimumStayArrive, MinimumStayThrough, MaximumStayArrive, MaximumStayThrough, LeadDays, StartTime, EndTime, SameDay, MaxSellDate, SellThreshold, SellLimit, FullPatternLengthOfStayArrival, MaximumLeadDays, MinSellDate, TotalHotelSellThreshold, NoSellDay, Suspended, SeasonalClosure, ByRequestOnly, ChildMinimumRoomOccupancy, AdultMinimumRoomOccupancy

Example: IsClosed

stringOptional
level

You can use one or more of the following restriction levels to retrieve applicable stay controls:

  • Hotel: Return a list of Hotel level stay restrictions.
  • Rate: Return a list of Rate level stay restrictions. If you add this, rateCode becomes a required input parameter.
  • Product: Return a list of Product level stay restrictions. If you add this, roomCode and rateCode become required input parameters.
  • RateCategory: Return a list of Rate Category level stay restrictions. If you add this, rateCategoryCode becomes a required input parameter.
  • RoomUpsell: Return a list of Room Upsell level stay restrictions. If you add this, roomUpsellCode becomes a required input parameter.
  • RoomCategoryUpsell: Return a list of Room Category Upsell level stay restrictions. If you add this, roomCategoryCode becomes a required input parameter.
  • RateCategoryAndRoomCategory: Return a list of Rate Category and Room Category level stay restrictions. If you add this, rateCategoryCode and roomCategoryCode become required input parameters.
  • RateCategoryAndRoom: Return a list of Rate Category and Room level stay restrictions. If you add this, rateCategoryCode and roomCode become required input parameters.
  • CouponOffer: Returns a list of Coupon level stay restrictions. If you add this, couponCode becomes a required input parameter, not the discount code that the guest would use.

To retrieve information based on more than one level, you can make this an array of levels.

Available values: Hotel, Product, Rate, RateCategory, Room, RoomCategory, RoomUpsell, RoomCategoryUpsell, RateCategoryAndRoomCategory, RateCategoryAndRoom, DefaultRate, CouponOffer

Example: List [ "Hotel", "Rate" ]

stringOptional
rateCode

The rate code for the stay control that you want to retrieve.

To retrieve information based on more than one rate code, you can make this an array of rate codes.

Example: List [ "ADV", "BAR" ]

stringOptional
rateCategoryCode

The rate category code for the stay control that you want to retrieve.

To retrieve information based on more than one rate category code, you can make this an array of rate category codes.

Example: List [ "RSC", "BAR" ]

stringOptional
roomCode

The room code for the stay control that you want to retrieve.

To retrieve information based on more than one room code, you can make this an array of room codes.

Example: List [ "SUPQ", "A1K" ]

stringOptional
roomCategoryCode

The room category code for the stay control that you want to retrieve.

To retrieve information based on more than one room category code, you can make this an array of room category codes.

Example: List [ "SUP", "SUI" ]

stringOptional
couponCode

The coupon code for the stay control that you want to retrieve.

To retrieve information based on more than one coupon code, you can make this an array of coupon codes.

Example: List [ "BlackFriday", "25%" ]

stringOptional
roomUpsellCode

The room upsell code for the stay control that you want to retrieve.

To retrieve information based on more than one room upsell code, you can make this an array of room upsell codes.

Example: List [ "RmUpgrade01", "RmUpgrade02" ]

stringOptional
pageStart

The starting record to be returned in the response (used to retrieve data in smaller sets).

Example: 1

integerOptional
pageSize

The number of records to be returned in the response. (0 = return max size.)

Example: 0

integerOptional

Response in JSON

{
  "ContentList": [
    {
      "channelList": [
        {
          "code": "VA",
          "name": "Voice Agent",
          "primaryOnly": true
        }
      ]
    }
  ],
  "couponOfferList": [
    {
      "code": "SAVE25%",
      "name": "25% Travel Discount Offer"
    }
  ],
  "StayControlList": [
    {
      "chain": {
        "id": 12723
      },
      "hotel": {
        "id": 13098
      },
      "channel": {
        "code": "WEB"
      },
      "rate": {
        "code": "ADV",
        "categoryCode": "DISC"
      },
      "room": {
        "code": "ROOMSP1",
        "categoryCode": "string"
      },
      "couponOffer": {
        "code": "SAVE25%"
      },
      "roomUpsell": {
        "code": "UP2"
      },
      "startDate": "2025-09-01",
      "endDate": "2025-09-30",
      "dayOfWeek": [
        "M"
      ],
      "level": "Hotel",
      "Type": "IsClosed",
      "value": "true",
      "valueType": "Boolean"
    }
  ],
  "Paging": {
    "size": 50,
    "start": 0,
    "total": 146
  }
}

 

Response Elements

The following table explains the elements you receive in the response:

ElementDescriptionType
ContentListThe array of stay control content elements.array
channelListThe array of one or more channels that you specified to query the stay controls.array
codeThe code of the channel list.string
nameThe name of the channel list.string
primaryOnlyWhen primaryOnly is false (or is not included in the response), the stay control restriction applies to all channels, which includes both primary and secondary channels that are enabled and disabled for distribution. When primaryOnly is true, the stay control restriction applies to the Booking Engine (primary) only, which includes both primary and secondary channels disabled for distribution.boolean
couponOfferListThe array of one or more coupon offers that you specified to query the stay controls.array
codeThe code of the coupon offer list.string
nameThe name of the coupon offer list.string
StayControlListThe array of stay controls that fit all the criteria that you specified.array
chainThe array to hold the hotel chain or management group for the stay control.string
idThe ID of the hotel chain or management group for the stay control.integer
hotelThe array to hold the hotel for the stay control.string
idThe ID of the hotel for the stay control.integer
channelThe array to hold the channel for the stay control.string
codeThe code of the channel for the stay control.string
rateThe array to hold the rate for the stay control.string
codeThe code of the rate for the stay control.string
categoryCodeThe category code of the rate for the stay control.string
roomThe array to hold the room type for the stay control.string
codeThe code of the room for the stay control.string
categoryCodeThe category code of the room for the stay control.string
couponOfferThe array to hold the coupon offer for the stay control.string
codeThe code of the coupon offer for the stay control.string
roomUpsellThe array to hold the room upsell for the stay control.string
codeThe code of the room upsell for the stay control.string
startDateThe start date for the stay control.string
endDateThe end date for the stay control.string
dayOfWeekThe day of the week for the stay control.string
levelThe restriction level for the stay control.string
TypeThe type for the stay control.string
valueThe value for the stay control.string
valueTypeThe value type for the stay control.string

⇧ Back to top

POST a stay control

This endpoint enables you to create or update a stay control.

[POST] /v1/api/admin/product/stayControl

Post Body Parameters

The following table describes the parameters to include in your post request:

ElementDescriptionType
criteriaThe array to hold details for the tax and its seasonal data.array
chainThe array to hold the hotel chain or management group for the stay control.string
idThe ID of the hotel chain or management group for the stay control.integer
hotelThe array to hold the hotel for the stay control.array
idThe ID of the hotel for the stay control.integer
startDateThe start date for the stay control.string
endDateThe end date for the stay control.string
channelListThe array of one or more channels in which the stay control can be used.array
codeThe codes for the channels.string
primaryOnlyWhen you set primaryOnly to false (or you do not include it in the response), the stay control restriction applies to all channels, which includes both primary and secondary channels that are enabled and disabled for distribution. When you set primaryOnly to true, the stay control restriction applies to the Booking Engine (primary) only, which includes both primary and secondary channels disabled for distribution.boolean
controlType

The type of stay control that you want to post.

Available values: IsClosed, NoArrival, NoDeparture, MinimumStayArrive, MinimumStayThrough, MaximumStayArrive, MaximumStayThrough, LeadDays, StartTime, EndTime, SameDay, MaxSellDate, SellThreshold, SellLimit, FullPatternLengthOfStayArrival, MaximumLeadDays, MinSellDate, TotalHotelSellThreshold, NoSellDay, Suspended, SeasonalClosure, ByRequestOnly, ChildMinimumRoomOccupancy, AdultMinimumRoomOccupancy

Example: IsClosed

string
dayOfWeekThe day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Sustring
valueListThe array to hold the values for the stay control.array
dayOfWeekThe day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Sustring
controlTypeThe type of stay control that you want to post.string
valueThe value for the stay control can be true, false, string, number, date, or military time, depending on your valueType.string
valueTypeThe data type of the value for the stay control can be None, String, Boolean, Date, MilitaryTime, Number.string
hotelThe array to hold the hotel for the stay control.array
idThe ID of the hotel for the stay control.string
rateThe array to hold the rate for the stay control.array
contextTypeMake the contextType Seasonal or Default to match the stay restriction type of the rate.string
codeThe code of the rate for the stay control.string
categoryCodeThe category code of the rate for the stay control.string
roomThe array to hold the room type for the stay control.array
codeThe code of the room for the stay control.string
categoryCodeThe category code of the room for the stay control.string
productThe array to hold the product details for the stay control.array
rateCodeThe code of the rate.string
roomCodeThe code of the room.string
couponOfferThe array to hold the coupon offer details for the stay control.array
codeThe code of the coupon offer for the stay control.string

Post Body Example

The following is an example of the body for this post request:

{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-11-28",
    "endDate": "2025-12-22",
    "channelList": [
      {
        "code": "WEB",
        "primaryOnly": true
      }
    ],
    "controlType": [
      "IsClosed"
    ],
    "dayOfWeek": [
      "M"
    ]
  },
  "valueList": [
    {
      "dayOfWeek": "M",
      "controlType": "IsClosed",
      "value": "string",
      "valueType": "Boolean",
      "hotel": {
        "id": 13098
      },
      "rate": {
        "contextType": "Default",
        "code": "ADV",
        "categoryCode": "DISC"
      },
      "room": {
        "code": "ROOMSP1",
        "categoryCode": "SUITE"
      },
      "product": {
        "rateCode": "STD",
        "roomCode": "QUEEN"
      },
      "couponOffer": {
        "code": "string"
      }
    }
  ]
}

Response in JSON

{
  "success": true,
  "timeStamp": "2025-11-30T18:25:43.511Z"
}

Response Elements

The following table explains the elements you receive in the response:

ElementDescriptionType
successThis element will be true or false to show whether or not your post was successful.boolean
timeStampThe time stamp when your post succeeded or failed.integer

⇧ Back to top

DELETE a stay control

This endpoint enables you to delete a stay control.

[DELETE] /v1/api/admin/product/stayControl

Delete Body Parameters

The following table describes the parameters to include in your delete request:

ElementDescriptionType
criteriaThe array to hold details for the tax and its seasonal data.array
chainThe array to hold the hotel chain or management group for the stay control.string
idThe ID of the hotel chain or management group for the stay control.integer
hotelThe array to hold the hotel for the stay control.array
idThe ID of the hotel for the stay control.integer
startDateThe start date for the stay control.string
endDateThe end date for the stay control.string
channelListThe array of one or more channels in which the stay control can be used.array
codeThe codes for the channels.string
primaryOnlyWhen you set primaryOnly to false (or you do not include it in the response), the stay control restriction applies to all channels, which includes both primary and secondary channels that are enabled and disabled for distribution. When you set primaryOnly to true, the stay control restriction applies to the Booking Engine (primary) only, which includes both primary and secondary channels disabled for distribution.boolean
controlType

The type of stay control that you want to post.

Available values: IsClosed, NoArrival, NoDeparture, MinimumStayArrive, MinimumStayThrough, MaximumStayArrive, MaximumStayThrough, LeadDays, StartTime, EndTime, SameDay, MaxSellDate, SellThreshold, SellLimit, FullPatternLengthOfStayArrival, MaximumLeadDays, MinSellDate, TotalHotelSellThreshold, NoSellDay, Suspended, SeasonalClosure, ByRequestOnly, ChildMinimumRoomOccupancy, AdultMinimumRoomOccupancy

Example: IsClosed

string
dayOfWeekThe day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Sustring
valueListThe array to hold the values for the stay control.array
hotelThe array to hold the hotel for the stay control.array
idThe ID of the hotel for the stay control.string
rateThe array to hold the rate for the stay control.array
codeThe code of the rate for the stay control.string
categoryCodeThe category code of the rate for the stay control.string
roomThe array to hold the room type for the stay control.array
codeThe code of the room for the stay control.string
categoryCodeThe category code of the room for the stay control.string
couponOfferThe array to hold the coupon offer details for the stay control.array
codeThe code of the coupon offer for the stay control.string

Delete Body Example

The following is an example of the body for this post request:

{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-11-28",
    "endDate": "2025-12-22",
    "channelList": [
      {
        "code": "WEB",
        "primaryOnly": true
      }
    ],
    "controlType": [
      "IsClosed"
    ],
    "dayOfWeek": [
      "M"
    ]
  },
  "valueList": [
    {
      "hotel": {
        "id": 13098
      },
      "rate": {
        "code": "ADV",
        "categoryCode": "DISC"
      },
      "room": {
        "code": "ROOMSP1",
        "categoryCode": "string"
      },
      "couponOffer": {
        "code": "SAVE25%"
      }
    }
  ]
}

Response in JSON

{
  "success": true,
  "timeStamp": "2025-11-30T18:25:43.511Z"
}

Response Elements

The following table explains the elements you receive in the response:

ElementDescriptionType
successThis element will be true or false to show whether or not your delete was successful.boolean
timeStampThe time stamp when your delete succeeded or failed.integer

⇧ Back to top

Use Cases

The following use cases provide examples of how to use this API's endpoints.

To get a list of stay controls based on their restriction level and control type, follow these steps:

  1. Choose one or more restriction levels. In this example, the restriction level is Hotel.
  2. Choose one or more control types. In this example, the control type is NoDeparture.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/stayControls?hotelId=13098&startDate=2025-10-03&endDate=2025-10-06&controlType=NoDeparture&level=Hotel
  4. Your response contains only stay controls that fit the restriction levels and control types you specified.

Rate Level

To get a list of stay controls based on their rate level, follow these steps:

  1. Decide on the rate level you want to see. In this example, it is ADV.
  2. Specify the level as Rate.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/stayControls?rateCode=ADV&level=Rate&hotelId=13098&startDate=2025-06-01&endDate=2025-06-07
  4. Your response contains only stay controls that fit the rate level you specified.

 

To get just one rate level stay control, follow these steps:

  1. Decide which stay control you want to see, and specify it in the controlType. In this example, it is SellLimit.
  2. Specify the level as Rate.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/stayControls?controlType=SellLimit&rateCode=ADV&level=Rate&hotelId=13098&startDate=2025-06-01&endDate=2025-06-07
  4. Your response contains only the SellLimit stay control.

To create rate level stay controls for SellLimit and MaximumStayThrough for two different rates, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body, which specifies the rate with each control type:
{
  "criteria": {
    "startDate": "2025-08-01",
    "endDate": "2025-08-07",
    "Hotel": {
      "id": 13098
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Rate": {
        "code": "50PCTDISC",
        "contextType": "Seasonal"
      },
      "controlType": "SellLimit",
      "dayofWeek": "M,Tu,W,Th,F,Sa,Su",
      "value": "454",
      "valueType": "Number"
    },
    {
      "Rate": {
        "code": "ADV"
      },
      "controlType": "MaximumStayThrough",
      "dayofWeek": "W",
      "value": "222",
      "valueType": "Number"
    }
  ]
}

To delete all rate level stay controls, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Use the following delete body. This omits controlType but does specify the rate level details, which makes your delete request delete ALL stay controls for the specified rate levels:
{
  "criteria": {
    "hotel": {
      "id": 100319
    },
    "startDate": "2025-06-01",
    "endDate": "2025-06-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Rate": {
        "code": "BAR"
      }
    }
  ]
}

Hotel Level

To create hotel level stay controls for MaximumLeadDays, SellLimit, LeadDays, and NoArrival, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body:
{
  "criteria": {
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "Hotel": {
      "id": 13098
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "controlType": "MaximumLeadDays,SellLimit",
      "dayofWeek": "M,Tu,W,Th,F,Sa,Su",
      "value": "9",
      "valueType": "Number"
    },
    {
      "controlType": "LeadDays",
      "dayofWeek": "F,Sa,Su",
      "value": "9",
      "valueType": "Number"
    },
    {
      "controlType": "NoArrival",
      "dayofWeek": "M,Tu,W",
      "value": "true",
      "valueType": "Boolean"
    }
  ]
}

To delete the hotel level NoArrival and LeadDays stay controls, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Use the following delete body, which includes the two stay controls in a comma-separated list:
{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-05-01",
    "endDate": "2025-05-03",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "controlType": "NoArrival,LeadDays"
    }
  ]
}

Product Level

To create product level stay controls for SellLimit and MaximumStayThrough, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body, which specifies product details for the stay controls:
{
  "criteria": {
    "startDate": "2025-06-01",
    "endDate": "2025-06-07",
    "Hotel": {
      "id": 100319
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "product": {
        "rateCode": "BAR",
        "roomCode": "LUXQ"
      },
      "controlType": "SellLimit",
      "dayofWeek": "M,Tu,W,Th,F,Sa,Su",
      "value": "9",
      "valueType": "Number"
    },
    {
      "product": {
        "rateCode": "BAR",
        "roomCode": "LUXQ"
      },
      "controlType": "MaximumStayThrough",
      "dayofWeek": "Su",
      "value": "3",
      "valueType": "Number"
    }
  ]
}

To delete all product level stay controls, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Use the following delete body. This omits controlType but does specify the product level details, which makes your delete request delete ALL stay controls for the specified product levels:
{
  "criteria": {
    "hotel": {
      "id": 100319
    },
    "startDate": "2025-06-01",
    "endDate": "2025-06-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Product": {
        "rateCode": "BAR",
        "roomCode": "LUXQ"
      }
    }
  ]
}

To delete stay controls for multiple products, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Use the following delete body, which includes three stay controls in a comma-separated list and includes two products in the value list:
{
  "criteria": {
    "hotel": {
      "id": 100319
    },
    "startDate": "2025-09-01",
    "endDate": "2025-09-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ],
    "controlType": "SellLimit,MaximumLeadDays,NoArrival"
  },
  "valueList": [
    {
      "Product": {
        "rateCode": "CHAIN_RATE",
        "roomCode": "LUXQ"
      }
    },
    {
      "Product": {
        "rateCode": "BAR",
        "roomCode": "LUXQ"
      }
    }
  ]
}

Rate Category Level

To create rate category level stay controls for SellLimit and NoArrival, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body, which specifies the rate category code for each stay control:
{
  "criteria": {
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "Hotel": {
      "id": 13098
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Rate": {
        "categoryCode": "BAR"
      },
      "controlType": "SellLimit",
      "dayofWeek": "W,Th,F",
      "value": "55",
      "valueType": "Number"
    },
    {
      "Rate": {
        "categoryCode": "BAR"
      },
      "controlType": "NoArrival",
      "dayofWeek": "M,Tu,W",
      "value": "true",
      "valueType": "Boolean"
    }
  ]
}

To get a list of stay controls based on their rate category level, follow these steps:

  1. Decide on the rate category level you want to see. In this example, it is BAR.
  2. In this use case, rateCategoryCode and level=RateCategory become required input parameters.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/product/stayControls?rateCategoryCode=BAR&level=RateCategory&hotelId=13098&startDate=2025-07-01&endDate=2025-07-07
  4. Your response contains only stay controls that fit the rate category level you specified.

To delete stay controls for a rate category level, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Decide on the rate category level for which you want to delete stay controls. In this example, it is BAR.
  3. Decide on the stay control type you want to delete. In this example, it is NoArrival.
  4. Use the following delete body:
{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ],
    "controlType": "NoArrival"
  },
  "valueList": [
    {
      "Rate": {
        "categoryCode": "BAR"
      }
    }
  ]
}

Room Level

To create room level stay controls for SellLimit and MaximumStayThrough for two different rooms, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body, which specifies the room for each stay control:
{
  "criteria": {
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "Hotel": {
      "id": 13098
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Room": {
        "code": "SUPK"
      },
      "controlType": "SellLimit",
      "dayofWeek": "M,Tu,W,Th,F,Sa,Su",
      "value": "454",
      "valueType": "Number"
    },
    {
      "Room": {
        "code": "SUPT"
      },
      "controlType": "MaximumStayThrough",
      "dayofWeek": "W",
      "value": "222",
      "valueType": "Number"
    }
  ]
}

To get a list of stay controls based on their room level, follow these steps:

  1. Decide on the room level you want to see. In this example, it is SUPK.
  2. In this use case, roomCode and level=Room become required input parameters.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/stayControls?roomCode=SUPK&level=Room&hotelId=13098&startDate=2025-07-01&endDate=2025-07-07
  4. Your response contains only stay controls that fit the room level you specified.

To delete stay controls for a room level, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Decide on the room level for which you want to delete stay controls. In this example, it is SUPK.
  3. Decide on the stay control type you want to delete. In this example, it is NoArrival.
  4. Use the following delete body:
{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ],
    "controlType": "NoArrival"
  },
  "valueList": [
    {
      "Room": {
        "code": "SUPK"
      }
    }
  ]
}

Room Category Level

To create room category level stay controls for SellLimit and MaximumStayThrough for two different room categories, follow these steps:

  1. Use the post endpoint:

    [POST] /v1/api/admin/product/stayControl
  2. Use the following post body, which specifies the room category for each stay control:
{
  "criteria": {
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "Hotel": {
      "id": 13098
    },
    "ChannelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ]
  },
  "valueList": [
    {
      "Room": {
        "categoryCode": "SUP"
      },
      "controlType": "SellLimit",
      "dayofWeek": "W,Th,F",
      "value": "55",
      "valueType": "Number"
    },
    {
      "Room": {
        "categoryCode": "ACCESS"
      },
      "controlType": "NoArrival",
      "dayofWeek": "M,Tu,W",
      "value": "true",
      "valueType": "Boolean"
    }
  ]
}

To get a list of stay controls based on their room category level, follow these steps:

  1. Decide on the room category level you want to see. In this example, it is SUP.
  2. In this use case, roomCategoryCode and level=RoomCategory become required input parameters.
  3. Your get call looks like this:

    [GET] /v1/api/admin/product/stayControls?roomCategoryCode=SUP&level=RoomCategory&hotelId=13098&startDate=2025-08-01&endDate=2025-08-07
  4. Your response contains only stay controls that fit the room category level you specified.

To delete stay controls for a room category level, follow these steps:

  1. Use the delete endpoint:

    [DELETE] /v1/api/admin/product/stayControl
  2. Decide on the room category level for which you want to delete stay controls. In this example, it is SUP.
  3. Decide on the stay control type you want to delete. In this example, it is NoArrival.
  4. Use the following delete body:
{
  "criteria": {
    "chain": {
      "id": 12723
    },
    "hotel": {
      "id": 13098
    },
    "startDate": "2025-07-01",
    "endDate": "2025-07-07",
    "channelList": [
      {
        "code": "ALL",
        "primaryOnly": false
      }
    ],
    "controlType": "NoArrival"
  },
  "valueList": [
    {
      "Room": {
        "categoryCode": "SUP"
      }
    }
  ]
}

⇧ Back to top