# Managing a children policy

Using the Flexible child rates solution, you can set up and update a property's children policy.

## Setting up a children policy

Setting up a children policy on the property level requires the following actions:

* Indicating whether children are allowed.
* Specifying the minimum age from which children are allowed. (Default minimum age is 0.)
* Specifying [age buckets](#what-are-age-buckets) with their corresponding age ranges.


You can do it in two ways:

* Using the API solution as described in this section.
* Telling your property to use the Booking.com extranet.


Set max (child) occupancy for room types
You must include the maximum number of total guests, adults and children that are physically able to stay in the room type. As an addition, you can also include the maximum number of children that can stay for a children rate. To learn more, see [managing room types.](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types)

### What are age buckets?

An age bucket is a category for children prices that specifies the age range to which the eventual price applies to. You must at least create one, but can create *up to* three age buckets per property. Each age bucket exists of a minimum and maximum age, where the maximum age is inclusive. Therefore, the minimum age of an age bucket (excluding the first, which does not have a preceding age bucket) must be larger than the maximum age of the preceding bucket. Let's look at an example scenario:

* Age bucket 1 with minimum age 0 and maximum age 3.
* Age bucket 2 with minimum age 4 and maximum age 12.
* Age bucket 3 with minimum age 13 and maximum age 17.


Age range qualifying as children
Booking.com considers guests under the age of 18 as children. Therefore, the age range that qualifies for children pricing is between 1 - 17.

You can see that the ages are inclusive and do not overlap. If they do, the system throws an error. When sending prices for children, the system checks whether the age bucket you specified exists, or whether the age range you specified matches an existing age bucket.

### Creating or updating a children policy


```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif
```

The `POST /ota/OTA_HotelDescriptiveContentNotif` endpoint enables you to create or update the children policy of a property by:

* Indicating that children are allowed: You must set the `AcceptedGuestType` attribute within the `PolicyInfo` element to `ChildrenAllowed`.
* Specifying the minimum age from which children are allowed: If your property requires a minimum age other than 0, you must set the `MinGuestAge` attribute within the `PolicyInfo` element to the desired age. Otherwise, you can leave this attribute out of the request.
* Specifiying the [age buckets](#what-are-age-buckets) with their corresponding age ranges: You must set at least one age bucket if you want to send children prices. To create an age bucket you specify the `MinAge` and `MaxAge` attributes within the `AgeBucket` element.


→ If you have not implemented `HotelDescriptiveContentNotif` (also known as Content API), then your property can also manage their children policy using the Booking.com extranet.

### Creating or updating

If you are *not* creating a property using the `HotelDescriptiveContentNotif` endpoint, creating and updating a property's children policy basically work the same way. For either you must:

1. [Retrieve the relevant policy information (nested within the `Policies` object) by retrieving property details.](/connectivity/docs/property-api/implementing-property-api-ga#retrieving-property-details)
2. Set `HotelDescriptiveContentNotifType` to `Overlay`.


Include other policies in your requests
Ensure that you include all other existing `Policies` data in your requests to not remove anything.

### Request body parameters

The following table describes the body parameters that concern flexible child pricing. Ensure that you include *all the other existing policies for your property* in the request body to not remove existing information because of overlay logic.

| Parameter | Attribute | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- | --- |
| `OTA_HotelDescriptiveContentNotifRQ` |  | Contains the request body elements. | object | required |  |
| **>** `HotelDescriptiveContents` |  | Contains the `HotelDescriptiveContent` object. | object | required |  |
| **>>** `HotelDescriptiveContent` |  | Contains the `Policies` array. | object | required |  |
| **>>>** `Policies` |  | Contains the `Policy` elements. | array | required |  |
| **>>>>** `Policy` |  | Contains the `Policy` details. | object | required |  |
| **>>>>>** `PolicyInfo` |  | Contains the `PolicyInfo` details. | object | optional |  |
|  | `AcceptedGuestType` | Specifies whether the property admits adults and children, or only adults. | enum | required | Accepts `AdultOnly` and `ChildrenAllowed`. Default value is `AdultOnly`. You must set it to `ChildrenAllowed` if you want to create age buckets or send children prices. |
|  | `MinGuestAge` | Specifies the minimum age that children are allowed to stay at the property. | integer | optional | The value for `MinGuestAge` must be the same as the `MinAge` of the first (with lowest age range) `AgeBucket`. |
| **>>>>>** `TPA_Extensions` |  | Contains the `Agebuckets` array. | object | optional |  |
| **>>>>>>** `AgeBuckets` |  | Contains the `Agebucket` elements. | array | optional |  |
| **>>>>>>>** `AgeBucket` |  | Contains the `Agebucket` details. | object | required* | Required if you added the `AgeBuckets` object. |
|  | `MinAge` | Specifies the minimum age for the age bucket range. | integer | required* | Required if you added the `AgeBuckets` object. |
|  | `MaxAge` | Specifies the maximum age for the age bucket range. | integer | required* | This value is inclusive and cannot overlap with the `MinAge` of the preceding `Agebucket`. So with a `MinAge` of `0` and a `MaxAge` of `6`, the `MinAge` for the next `AgeBucket` should be `7`. |


### Request body example


```xml
<OTA_HotelDescriptiveContentNotifRQ>
   <HotelDescriptiveContents>
      <HotelDescriptiveContent HotelCode="6963343" HotelDescriptiveContentNotifType="Overlay">
          <Policies>
             <Policy>
               <PolicyInfo AcceptedGuestType="ChildrenAllowed" MinGuestAge="0"/>
               <TPA_Extensions>
                 <AgeBuckets>
                     <AgeBucket MinAge="0" MaxAge="3"/> 
                     <AgeBucket MinAge="4" MaxAge="12"/>
                     <AgeBucket MinAge="13" MaxAge="17"/>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
```

### Response body example

The following is a successful response body example:


```xml
<OTA_HotelDescriptiveContentNotifRS>
  <Success />
</OTA_HotelDescriptiveContentNotifRS>
```

### Response body elements

The following table describes the response elements:

| Element | Description | Type | Notes |
|  --- | --- | --- | --- |
| `OTA_HotelDescriptiveContentNotifRS` | Contains the response data. | object |  |
| **>** `success` | Indicates whether the request was successful. | boolean |  |
| `ruid` | Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |


## Retrieving age buckets


```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveInfo
```

The `POST /ota/OTA_HotelDescriptiveInfo` endpoint enables you to retrieve existing age buckets (with age ranges) for children on the property level.

You need to enable feature `Flexible children prices` from the [Feature management page](https://connect.booking.com/feature_management).

### Request body parameters

The following table describes the required request body elements for this endpoint:

| Parameter | Attribute | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- | --- |
| `OTA_HotelDescriptiveInfoRQ` |  | Contains the `HotelDescriptiveInfos` object. | object | required | - |
| **>** `HotelDescriptiveInfos` |  | Contains the `HotelDescriptiveInfo` object. | object | required | - |
| **>>** `HotelDescriptiveInfo` |  | Contains the `HotelDescriptiveInfo` details. | object | required | - |
|  | `HotelCode` | Specifies the unique property id. | integer | required |  |


### Request body example


```xml
<OTA_HotelDescriptiveInfoRQ>
    <HotelDescriptiveInfos>
        <HotelDescriptiveInfo HotelCode="6963343">
        </HotelDescriptiveInfo>
    </HotelDescriptiveInfos>
</OTA_HotelDescriptiveInfoRQ>
```

### Response body example

The following is a successful response body example:


```xml
<OTA_HotelDescriptiveInfoRS>
   <HotelDescriptiveContents>
       <HotelDescriptiveContent HotelName="HOTEL_NAME" LanguageCode="en" ID="6963343" Status="Open / bookable" CurrencyCode="USD">
         ...
          <Policies>
             <Policy>
               ...
               <TPA_Extensions>
                 <AgeBuckets>
                     <AgeBucket MinAge="0" MaxAge="3" AgeBucketID="1"/> 
                     <AgeBucket MinAge="4" MaxAge="12" AgeBucketID="2"/>
                     <AgeBucket MinAge="13" MaxAge="17" AgeBucketID="3"/>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveInfoRS>
```

### Response body elements

The following table only describes the response body parameters that concern the children policies and pricing.

| Element | Attribute | Description | Type | Notes |
|  --- | --- | --- | --- | --- |
| **>>>>>** `TPA_Extensions` |  | Contains the `Agebuckets` array. | object |  |
| **>>>>>>** `AgeBuckets` |  | Contains the `Agebucket` elements. | array |  |
| **>>>>>>>** `AgeBucket` |  | Contains the `Agebucket` details. | object |  |
|  | `MinAge` | Specifies the minimum age for the age bucket range. | integer |  |
|  | `MaxAge` | Specifies the maximum age for the age bucket range. | integer |  |
|  | `AgeBucketID` | Specifies the unique ID of the age bucket. | integer | You can use this ID to send children prices. |


## Removing age buckets


```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif
```

The `POST /ota/OTA_HotelDescriptiveContentNotif` endpoint enables you to remove all age buckets by sending an empty `AgeBuckets` object. To remove only one or two age buckets, see [updating child policies.](#creating-or-updating-a-children-policy)

### Request body parameters

The following table only describes the body parameters that concern the children policy. Ensure that you include *all the other existing policies for your property* in the request body to not remove other existing information because of overlay logic.

| Parameter | Attribute | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- | --- |
| `OTA_HotelDescriptiveContentNotifRQ` |  | Contains the request body elements. | object | required |  |
| **>** `HotelDescriptiveContents` |  | Contains the `HotelDescriptiveContent` object. | object | required |  |
| **>>** `HotelDescriptiveContent` |  | Contains the `Policies` array. | object | required |  |
| **>>>** `Policies` |  | Contains the `Policy` elements. | object | required |  |
| **>>>>** `Policy` |  | Contains the `Policy` details. | object | required |  |
| **>>>>>** `PolicyInfo` |  | Contains the `PolicyInfo` details. | object | optional |  |
|  | `AcceptedGuestType` | Specifies whether the property admits adults and children, or only adults. | enum | optional | Accepts `AdultOnly` and `ChildrenAllowed`. Default: `AdultOnly` |
|  | `MinGuestAge` | Specifies the minimum age that children are allowed (in case `ChildrenAllowed`) to stay at the property. | integer | optional |  |
| **>>>>>** `TPA_Extensions` |  | Contains the `Agebuckets` array. | object | required |  |
| **>>>>>>** `AgeBuckets` |  | Contains the `Agebucket` elements. | array | required |  |
| **>>>>>>>** `AgeBucket` |  | Contains the `Agebucket` details. | object | required |  |
|  | `MinAge` | Specifies the minimum age for the age bucket range. | integer | required* | Required if you added the `AgeBuckets` object. |
|  | `MaxAge` | Specifies the maximum age for the age bucket range. | integer | required* | This value is inclusive and cannot overlap with the `MinAge` of another `Agebucket`. So with a `MinAge` of `0` and a `MaxAge` of `6`, the `MinAge` for the possible following `AgeBucket` should be `7`. |


### Request body example


```xml
<OTA_HotelDescriptiveContentNotifRQ>
   <HotelDescriptiveContents>
      <HotelDescriptiveContent HotelName="HOTEL_NAME" HotelCode="6963343" HotelDescriptiveContentNotifType="Overlay">
	      ...
          <Policies>
             <Policy>
               ...
               <TPA_Extensions>
                 <AgeBuckets>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
```

### Response body example

The following is a successful response body example:


```xml
<OTA_HotelDescriptiveContentNotifRS>
  <Success />
</OTA_HotelDescriptiveContentNotifRS>
```

### Response body elements

The following table describes the response elements:

| Element | Description | Type | Notes |
|  --- | --- | --- | --- |
| `OTA_HotelDescriptiveContentNotifRS` | Contains the response data. | object |  |
| **>** `success` | Indicates whether the request was successful. | string |  |
| `ruid` | Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |