# Managing Facilities API

Use the Facilities API to manage facilities at both the property- and room-level.

## Understanding facilities supported by Booking.com

Booking.com supports adding or assigning a variety of different facilities at the property- or room-level.
Specify the facility ID along with any required parameters to assign a facility.

Facilities are of the following types:

- Single-instance facilities: You can assign these facilities only once to a property or a room. An example of a single-instance facility is: room service.
There are two types of single-instance facilities:
  - Single-instance facilities that can be toggled on or off.
  - Single-instance facilities supporting optional parameters: Allows you to specify more details about the facility
- Multi-instance facilities: You can assign multiple facilities of this type to a property. When adding multi-instance facilities you must provide additional details to add to a property or a room. Examples of multi-instance facilities are: Restaurant, Swimming pool and Parking.


To get the list of supported facilities, their corresponding ID and OTA code along with other details, use the Meta endpoint.

List of facilities is mostly static
The Meta endpoint returns a list of all Booking.com supported facilities and their details. Updates to this list are quite infrequent but they sometimes do happen.
Use this endpoint to get up-to-date information and pick up any newly introduced facilities at Booking.com.

### Use bathrooms endpoint to manage bathroom facilities

To add or update bathroom facilities including hostel bathroom facilities use the `/bathrooms` endpoint in the Facilities API. To learn more, see [Managing bathroom facilities.](/connectivity/docs/content-api-modules/facilities-api/manage-bathrooms)

## Introducing the Meta endpoint

Use the Meta endpoint to:

- Get the list of all supported facilities
  - To get the details of a property-level facility: Look for a matching name under the `facility_name` in the response. To add this facility, you must specify the `facility_id`. Property-level facilities are listed under the `property_facility_metas` in the meta endpoint response.
  - To get the details of the room-level facility: Look for a matching name under the `room_facility_name` in the response. To add the facility, you must specify the `room_facility_id`. Room-level facilities are listed under the `room_facility_metas` in the meta endpoint response.
- Details of the facilities such as ID, OTA code and any optional parameters.


[The open API specification](/connectivity/docs/openapispecs/facilities-api/facilities-api-specification/meta-data-endpoint) contains all the data models supported by the Facilities API.

## Adding single-instance facilities

Majority of the facilities are single-instance facilities that do not require any mandatory parameters.
To add this facility type, you specify whether the facility is available at the property or room.
For example, you specify either `Present` or `Missing`, indicating the presence or absence of the corresponding facility.

All the facilities that do not contain a `required_details_list` field from the meta endpoint response can be added using this approach.

### A GUI example of a single-instance facility with no required details

![simple-facility-image](/assets/simple-facility.c97f7a92c6e3bfeca4759016ec0e3596cc259dd506026faa37af1f87031e76e7.17344de0.png)

## Single-instance facilities with additional details

Some facilities support specifying *optional* details.
You can identify such facilities in the meta endpoint response by looking for facilities that contain `allowed_details_list`, but not `required_details_list`.

### A GUI example of a single-instance facility with optional details

![additional-details-image](/assets/additional-details.c0621588f61995efb42c5db7efa9b9bab42545045ac032d13380e234a9a37e40.17344de0.png)

## Adding multi-instance facilities

To add any multi-instance facility you must provide details for all the *required* parameters.
These facilities also allow you to specify multiple instances of that facility in a property.

Let's use the `parking` facility as an example.

### A GUI example for multi-instance facility

![extended-facility-parking-image](/assets/extended-facility-parking.a59fa7ad9bbb393b941988fc61531c2ef9c0ef4d099ae0b7970461976fcf8744.17344de0.png)

Each instance contain additional details:

![extended-facility-parking-expanded-image](/assets/parking-details-expanded.26cc82d1ca577b094aaa6cddea37a3c48ccde6f6810f95cc67241ef8f749e51e.17344de0.png)

To see the API specification for the parking facility, see the [Meta endpoint in the Open API specification.](/connectivity/docs/openapispecs/facilities-api/facilities-api-specification/meta-data-endpoint)

## Managing property-level facilities

You can perform the following actions for property-level facilities:

- [Retrieve the list of existing property facilities](/connectivity/docs/content-api-modules/facilities-api/manage-property-facilities#retrieving-facilities-details-added-to-a-property) using the `GET /facilities-api/{propertyId}/` endpoint.
- [Add, update or remove property-level facilities](/connectivity/docs/content-api-modules/facilities-api/manage-property-facilities#adding-single-instance-facilities) using the `PUT /facilities-api/{propertyId}/` endpoint.


## Managing room-level facilities

You can perform the following actions for room-level facilities:

- [Retrieve the list of existing room facilities](/connectivity/docs/content-api-modules/facilities-api/manage-room-facilities#retrieving-room-facilities-details-added-to-a-property) using the `GET /facilities-api/{propertyId}/rooms/{roomId}/` endpoint.
- [Add, update or remove room-level facilities](/connectivity/docs/content-api-modules/facilities-api/manage-property-facilities#adding-single-instance-facilities) using the `PUT /facilities-api/{propertyId}/rooms/{roomId}/` endpoint.


## Going live

Before you go live with your API integration, you'll need to meet certain requirements. For more information, see [Going Live.](/connectivity/docs/going_live/)