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/stayControlsQuery Parameters
The following table describes the elements that you can include when you query this endpoint:
| Element | Description | Type | Required? |
|---|---|---|---|
| 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" ] | string | Required |
| chainId | The unique ID for a hotel chain or management group in CRS. Example: 12723 | integer | Optional |
| startDate | The start date for the stay control that you want to retrieve. Example: 2025-11-27 (yyyy-mm-dd) | string | Required |
| endDate | The end date for the stay control that you want to retrieve. Example: 2025-11-30 (yyyy-mm-dd) | string | Required |
| 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" ] | string | Optional |
| 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 | string | Optional |
| level | You can use one or more of the following restriction levels to retrieve applicable stay controls:
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" ] | string | Optional |
| 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" ] | string | Optional |
| 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" ] | string | Optional |
| 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" ] | string | Optional |
| 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" ] | string | Optional |
| 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%" ] | string | Optional |
| 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" ] | string | Optional |
| pageStart | The starting record to be returned in the response (used to retrieve data in smaller sets). Example: 1 | integer | Optional |
| pageSize | The number of records to be returned in the response. (0 = return max size.) Example: 0 | integer | Optional |
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:
| Element | Description | Type |
|---|---|---|
| ContentList | The array of stay control content elements. | array |
| channelList | The array of one or more channels that you specified to query the stay controls. | array |
| code | The code of the channel list. | string |
| name | The name of the channel list. | string |
| primaryOnly | When 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 |
| couponOfferList | The array of one or more coupon offers that you specified to query the stay controls. | array |
| code | The code of the coupon offer list. | string |
| name | The name of the coupon offer list. | string |
| StayControlList | The array of stay controls that fit all the criteria that you specified. | array |
| chain | The array to hold the hotel chain or management group for the stay control. | string |
| id | The ID of the hotel chain or management group for the stay control. | integer |
| hotel | The array to hold the hotel for the stay control. | string |
| id | The ID of the hotel for the stay control. | integer |
| channel | The array to hold the channel for the stay control. | string |
| code | The code of the channel for the stay control. | string |
| rate | The array to hold the rate for the stay control. | string |
| code | The code of the rate for the stay control. | string |
| categoryCode | The category code of the rate for the stay control. | string |
| room | The array to hold the room type for the stay control. | string |
| code | The code of the room for the stay control. | string |
| categoryCode | The category code of the room for the stay control. | string |
| couponOffer | The array to hold the coupon offer for the stay control. | string |
| code | The code of the coupon offer for the stay control. | string |
| roomUpsell | The array to hold the room upsell for the stay control. | string |
| code | The code of the room upsell for the stay control. | string |
| startDate | The start date for the stay control. | string |
| endDate | The end date for the stay control. | string |
| dayOfWeek | The day of the week for the stay control. | string |
| level | The restriction level for the stay control. | string |
| Type | The type for the stay control. | string |
| value | The value for the stay control. | string |
| valueType | The value type for the stay control. | string |
POST a stay control
This endpoint enables you to create or update a stay control.
[POST] /v1/api/admin/product/stayControlPost Body Parameters
The following table describes the parameters to include in your post request:
| Element | Description | Type |
|---|---|---|
| criteria | The array to hold details for the tax and its seasonal data. | array |
| chain | The array to hold the hotel chain or management group for the stay control. | string |
| id | The ID of the hotel chain or management group for the stay control. | integer |
| hotel | The array to hold the hotel for the stay control. | array |
| id | The ID of the hotel for the stay control. | integer |
| startDate | The start date for the stay control. | string |
| endDate | The end date for the stay control. | string |
| channelList | The array of one or more channels in which the stay control can be used. | array |
| code | The codes for the channels. | string |
| primaryOnly | When 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 |
| dayOfWeek | The day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Su | string |
| valueList | The array to hold the values for the stay control. | array |
| dayOfWeek | The day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Su | string |
| controlType | The type of stay control that you want to post. | string |
| value | The value for the stay control can be true, false, string, number, date, or military time, depending on your valueType. | string |
| valueType | The data type of the value for the stay control can be None, String, Boolean, Date, MilitaryTime, Number. | string |
| hotel | The array to hold the hotel for the stay control. | array |
| id | The ID of the hotel for the stay control. | string |
| rate | The array to hold the rate for the stay control. | array |
| contextType | Make the contextType Seasonal or Default to match the stay restriction type of the rate. | string |
| code | The code of the rate for the stay control. | string |
| categoryCode | The category code of the rate for the stay control. | string |
| room | The array to hold the room type for the stay control. | array |
| code | The code of the room for the stay control. | string |
| categoryCode | The category code of the room for the stay control. | string |
| product | The array to hold the product details for the stay control. | array |
| rateCode | The code of the rate. | string |
| roomCode | The code of the room. | string |
| couponOffer | The array to hold the coupon offer details for the stay control. | array |
| code | The 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:
| Element | Description | Type |
|---|---|---|
| success | This element will be true or false to show whether or not your post was successful. | boolean |
| timeStamp | The time stamp when your post succeeded or failed. | integer |
DELETE a stay control
This endpoint enables you to delete a stay control.
[DELETE] /v1/api/admin/product/stayControlDelete Body Parameters
The following table describes the parameters to include in your delete request:
| Element | Description | Type |
|---|---|---|
| criteria | The array to hold details for the tax and its seasonal data. | array |
| chain | The array to hold the hotel chain or management group for the stay control. | string |
| id | The ID of the hotel chain or management group for the stay control. | integer |
| hotel | The array to hold the hotel for the stay control. | array |
| id | The ID of the hotel for the stay control. | integer |
| startDate | The start date for the stay control. | string |
| endDate | The end date for the stay control. | string |
| channelList | The array of one or more channels in which the stay control can be used. | array |
| code | The codes for the channels. | string |
| primaryOnly | When 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 |
| dayOfWeek | The day of the week for the stay control. Days of the week are: M, Tu, W, Th, F, Sa, Su | string |
| valueList | The array to hold the values for the stay control. | array |
| hotel | The array to hold the hotel for the stay control. | array |
| id | The ID of the hotel for the stay control. | string |
| rate | The array to hold the rate for the stay control. | array |
| code | The code of the rate for the stay control. | string |
| categoryCode | The category code of the rate for the stay control. | string |
| room | The array to hold the room type for the stay control. | array |
| code | The code of the room for the stay control. | string |
| categoryCode | The category code of the room for the stay control. | string |
| couponOffer | The array to hold the coupon offer details for the stay control. | array |
| code | The 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:
| Element | Description | Type |
|---|---|---|
| success | This element will be true or false to show whether or not your delete was successful. | boolean |
| timeStamp | The time stamp when your delete succeeded or failed. | integer |
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:
- Choose one or more restriction levels. In this example, the restriction level is Hotel.
- Choose one or more control types. In this example, the control type is NoDeparture.
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
- 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:
- Decide on the rate level you want to see. In this example, it is ADV.
- Specify the level as Rate.
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
- Your response contains only stay controls that fit the rate level you specified.
To get just one rate level stay control, follow these steps:
- Decide which stay control you want to see, and specify it in the controlType. In this example, it is SellLimit.
- Specify the level as Rate.
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
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
- Decide on the rate category level you want to see. In this example, it is BAR.
- In this use case, rateCategoryCode and level=RateCategory become required input parameters.
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
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- Decide on the rate category level for which you want to delete stay controls. In this example, it is BAR.
- Decide on the stay control type you want to delete. In this example, it is NoArrival.
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
- Decide on the room level you want to see. In this example, it is SUPK.
- In this use case, roomCode and level=Room become required input parameters.
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
- Your response contains only stay controls that fit the room level you specified.
To delete stay controls for a room level, follow these steps:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- Decide on the room level for which you want to delete stay controls. In this example, it is SUPK.
- Decide on the stay control type you want to delete. In this example, it is NoArrival.
- 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:
Use the post endpoint:
[POST] /v1/api/admin/product/stayControl
- 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:
- Decide on the room category level you want to see. In this example, it is SUP.
- In this use case, roomCategoryCode and level=RoomCategory become required input parameters.
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
- 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:
Use the delete endpoint:
[DELETE] /v1/api/admin/product/stayControl
- Decide on the room category level for which you want to delete stay controls. In this example, it is SUP.
- Decide on the stay control type you want to delete. In this example, it is NoArrival.
- 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"
}
}
]
}