# Room types objects

Details about room types are stored in a `GuestRoom` element. This page describes the elements and attributes in the `GuestRoom` descendants tree.

## Related calls

* [OTA_HotelInvNotif](/connectivity/docs/ota-hotelinvnotif) — Create a room type within a property.


## Sample XML

The sample below is an excerpt and not a valid API request.

```xml
<GuestRoom>                
  <Occupancy MaxOccupancy="2" MaxAdultOccupancy="2" MaxChildOccupancy="1"/>
  <Quantities MaximumAdditionalGuests="1" MaxCribs="1" MaxRollaways="0">
  <Room RoomID="123444"
    Quantity="2"
    NonSmoking="1"
    RoomType="Double"
    SizeMeasurement="16"
    SizeMeasurementUnit="sqm"
    LicenseNumber="AB-CD-1234"/>
  <Amenities>
    <Amenity AmenityCode="28" />                  
    <Amenity AmenityCode="69"
      Value="5" />                
    <Amenity AmenityCode="33"
      Value="1"
      Configuration="1"/>
  </Amenities>
  <Description>                    
    <Text>Deluxe Double Room with Sea View</Text>                    
  </Description>
  <TPA_Extensions>                     
    <SubRooms>
      <SubRoom RoomType="Bedroom"
        PrivateBathroom="1"
        MaxGuests="2">                         
        <Amenities>
          <Amenity AmenityCode="200"
            Value="3" />
          </Amenities>
      </SubRoom>
      <SubRoom RoomType="Living room"
        MaxGuests="2">  
        <Amenities>
          <Amenity AmenityCode="33"
            Value="2" />
          </Amenities>
        </SubRoom>
      <SubRoom RoomType="Bathroom"
        Number="2" />
    </SubRooms>
    <Occupancy MaxChildPayableOccupancy="4" />
  </TPA_Extensions>
</GuestRoom>
```

## GuestRoom

Contains information about a single [room type](/connectivity/docs/ota-hotelinvnotif).

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `Occupancy` | Contains the room type occupancy details. | object | 1..1 | - |
|  `Occupancy`/`@MaxOccupancy` | Specifies the maximum number of guests allowed to stay in the room type. | int | 0..1 | You cannot specify `Occupancy` for subrooms. |
|  `Occupancy`/`@MaxAdultOccupancy` | Specifies the maximum number of adult guests allowed to stay in the room type. | int | 0..1 |  |
|   `Occupancy`/`@MaxChildOccupancy` | Specifies the maximum number of children allowed to stay in the room type physically. | int | 0..1 | The value for `@MaxChildOccupancy` is always lower than that for `@MaxAdultOccupancy`, because you cannot have a room with only children. |
| `Quantities` | Contains the crib and extra bed details. | object | 1..1 | - |
|  `Quantities`/`@MaximumAdditionalGuests` | Specifies the maximum number of additional guests allowed to stay in the room. | int | 0..1 |  |
|  `Quantities`/`@MaxCribs` | Specifies the maximum number of cribs in the room. | int | 0..1 |  |
|  `Quantities`/`@MaxRollaways` | Specifies the maximum number of extra beds (rollaways) in the room. | int | 0..1 |  |
| `Room[@RoomID]` | A custom room ID, assigned by the provider, for cross-referencing and mapping purposes. | string | Optional | The Booking.com room type ID is stored in `SellableProduct[@InvCode]`. |
| `Room[@RoomType]` | The number or name of the [Booking.com Room Type Code](/connectivity/docs/codes-bcrt). | enum | Required | Accepts the numbers and names listed under [BCRT](/connectivity/docs/codes-bcrt). |
| `Room[@Quantity]` | The number of rooms of this type the property has. | integer | Optional | - |
| `Room[@NonSmoking]` | Specifies whether the property allows smoking in the room. | extended_boolean | Optional | Accepts: `1` (non-smoking), `0` (smoking allowed). Default: empty**NOTE:** In [Extranet](https://admin.booking.com), an empty value is displayed as "unknown". |
| `Room[@SizeMeasurement]` | The size of the room. | float | Optional | The default measurement unit is square metres. Use `Room[@SizeMeasurementUnit]` to specify another unit. |
| `Room[@SizeMeasurementUnit]` | The measurement unit for `Room[@SizeMeasurement]`. | enum | Optional | Accepts: `sqm` (square metres), `sqft` (square feet). Default: `sqm` |
| `Room[@LicenseNumber]` | The licence number of the room, mandatory for certain regions. | string | Optional | **Required** in certain countries and cities in the world. Your account manager can tell you more. |
| `Amenities` | - | array of [Amenity](#amenity) | Optional | - |
| `Description` | See [Description](#description). | object | Required | - |
| `TPA_Extensions` | See [TPA_Extensions](#tpa_extensions). | object | Optional | - |


## Amenity

Contains details of a [room amenity](/connectivity/docs/codes-rma). Child of `Amenities`.

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `Amenity[@AmenityCode]` | The [Room Amenity Type Code](/connectivity/docs/codes-rma). | enum | Required | Accepts the values under [RMA](/connectivity/docs/codes-rma).**NOTE:** Amenities in [subrooms](#subroom) can only be [beds](/connectivity/docs/codes-rma#bedding-type). |
| `Amenity[@Value]` | The type of charge for the amenity. | enum | Optional | **Required and only allowed** when [RMA](/connectivity/docs/codes-rma) code type is not `boolean`. Accepts: `3` (not specified), `4` (free of charge), `5` (surcharge). |
| `Amenity[@Configuration]` | Specifies whether this amenity is available in the standard or the alternative room arrangement. | enum | Optional | **Required and only allowed** when [RMA](/connectivity/docs/codes-rma) code is a [bed type](/connectivity/docs/codes-rma#bedding-type). Accepts: `1` (standard arrangement), `2` (alternative arrangement). |


## Description

Contains the descriptive text for the room that appear on Booking.com. Child of [GuestRoom](#guestroom).

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `Text` | A custom, optional name for the room in English. | string | Optional | If empty, we assigned a default name based on `Room[@RoomType]`. |


## TPA_Extensions

Our extensions to the [OTA](http://opentravelmodel.net/pubs/specifications/Specifications.html) standard. Child of [GuestRoom](#guestroom).

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `SubRooms` | - | array of [SubRoom](#subroom) | Optional | Only allowed when `Room[@RoomType]` is one of the following: `Apartment`, `Suite`, `Chalet`, `Bungalow`, `Holiday home`, `Villa`, `Mobile home`. |
| `Occupancy` | - | Contains `MaxChildPayableOccupancy` | Optional |  |


## SubRoom

Contains details of a subroom. Child of `SubRooms`. Use subrooms to define separate rooms within one bookable unit, as might be the case in an apartment or holiday home.

Limitations for subrooms
You can only define subrooms when `Room[@RoomType]` is one of the following: `Apartment`, `Suite`, `Chalet`, `Bungalow`, `Holiday home`, `Villa`, `Mobile home`. Also, the total number of beds in all subrooms must match the number of beds defined in `Amenities`. If the number does not match, [ota/OTA_HotelSummaryNotif][ota_hotelsummarynotif] will return an error when you try to open the property.

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `SubRoom[@RoomType]` | The type of subroom. | enum | Required | Accepts: `Living room`, `Bedroom`, `Bathroom`. |
| `SubRoom[@PrivateBathroom]` | Specifies whether the subroom has a private bathroom. | boolean | Optional | Only allowed when `SubRoom[@RoomType]` is `Living room` or `Bedroom`. Boolean expressed as integer. Accepts: `1` (has private bathroom), `0` (has no private bathroom).  Default: `0` |
| `SubRoom[@MaxGuests]` | Specifies the number of guests that can stay in the room. | integer | Required | Only allowed when `SubRoom[@RoomType]` is `Living room` or `Bedroom`. Accepts: `1`–`20`. |
| `SubRoom[@Number]` | The total number of bathrooms in the bookable unit. | integer | Optional | Only allowed when `SubRoom[@RoomType="Bathroom"]`. Accepts: `0`–`20`. |
| `Amenities` | - | array of [Amenity](#amenity) | Optional | Amenities in subrooms can only be [beds](/connectivity/docs/codes-rma#bedding-type). |


## Occupancy

Contains details of Occupancy. Maximum number of children that are eligible for the children rate – any more children will be charged as adults.

MaxChildPayableOccupancy cannot be greater than MaxChildOccupancy
If a higher value is sent then the max value will be silently set for MaxChildPayableOccupancy

| Field | Description | Type | Required | Notes |
|  --- | --- | --- | --- | --- |
| `Occupancy[@MaxChildPayableOccupancy]` | Specifies the maximum number of children allowed to stay in the room type that pay children rates | integer | optional | The value for MaxChildPayableOccupancy cannot be greater than MaxChildOccupancy. |