{
  "openapi": "3.0.1",
  "info": {
    "title": "Facilities API",
    "description": "Manage facilities at both the property- and room-level.\\n\nBooking.com supports adding or assigning a variety of different facilities at the property- or room-level.\nSpecify the facility ID along with any required parameters to assign a facility.\\n\\nFacilities are of the following types:\n<ul><li>Single-instance facilities: You can assign these facilities only once to a property or a room.\nAn example of a single-instance facility is: room service. There are two types of single-instance facilities:\n<ul><li>Single-instance facilities that can be toggled on or off.</li><li>Single-instance facilities supporting optional parameters:\nAllows you to specify more details about the facility</li></ul><li>Multi-instance facilities:\nYou can assign multiple facilities of this type to a property.\nWhen adding multi-instance facilities you must provide additional details to add to a property or a room.\nExamples of multi-instance facilities are: Restaurant, Swimming pool and Parking.</li></ul>\n",
    "contact": {
      "name": "Connectivity Team",
      "url": "https://connect.booking.com",
      "email": "connectivity@booking.com"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://supply-xml.booking.com/facilities-api/",
      "description": "Test using live endpoint"
    }
  ],
  "tags": [
    {
      "name": "About Try it",
      "description": "Learn how to effectively use the Try it feature in the Facilities API documentation.\n\nUse the **Try it** feature to send test request examples to the API endpoints directly from the developer portal and depending on the selected environment either see static, pre-built responses or dynamic responses from a test property.\n\n## Environment\n\nYou can select between two different environments (top right corner in the UI):\n\n**Test static response** (default):\n- Helps to understand the response data schema\n- Recommended for all write operations (POST, PUT, DELETE)\n- Environment for testing without affecting live/test data\n\n**Test live endpoint**:\n- Make sure to use only test properties.\n- Changes will affect your test property data\n- Requires valid credentials\n- Same API structure as production\n\n## Request\n\nUsing the UI, toggle between **Edit** and **Preview** tabs to see the values applied to the path or query placeholders (if there are any). You can also click on any unresolved placeholders to add a value or edit an existing placeholder value.\n\nThe portal loads the default request body. Where the specification supports multiple request body examples (for example: Rooms API POST endpoint), you can choose a different request body from the drop-down list.\n\nSome helpful pointers before running a request:\n\n- **Authentication** (when using live endpoint): Configure your authentication headers\n  - API Key or OAuth token as required. Use the **Environments** tab.\n  - Make sure to manage separate machine accounts for test vs. properties in production.\n  - Ensure credentials match your selected environment.\n\n- **Parameters**: Fill in required parameters\n  - Path parameters (like `propertyId`)\n  - Query parameters (like `language_code`)\n  - Request body for `POST/PUT` operations\n\n- **Execute**: Click **Send** to send the request\n  - The request is sent to the selected environment\n  - When sending requests to the live endpoint, real HTTP request is made to the API\n\n## Response\n\nThe Try it feature provides comprehensive response information to the extent supported by the Open API specification:\n\n### Status code\n- **2xx**: Success responses (200)\n- **4xx**: Client errors (400 Bad Request, 401 Unauthorized, 404 Not Found)\n- **5xx**: Server errors (500 Internal Server Error)\n\n### Response body\n- JSON formatted response data\n\nIf the returned response, by default, is unformatted, select the supported Response body format in the UI.\n\n### Response headers\n- Content-Type, Content-Length.\n\n## Environments\n\nThe **Environments** tab allows you to create variables specific to the environment. For example, you can add a variable to hold the value of the `property-id` placeholder. The portal inserts the respective value depending on the environment at the time of sending the request.\n\n### Variables\n\nMost of the endpoints (especially POST/PUT/DELETE) require you to add a path or query parameter before sending the request. The Open API specification marks these parameters with placeholder tags. For example, {{`property_id`}}. You can use the **Environments** tab to manage the values for these placeholders as variables.\n\n#### Path parameters\n- **Required**: Must be provided to make the request\n- **Type validation**: Ensures correct data types (integer, string, etc.)\n- **Example**: `propertyId` in `/facilities-api/properties/{propertyId}`\n\n#### Query parameters\n- **Optional**: Usually have default values\n- **Example**: `language_code` with `en-us` as the default value\n\n#### Request body\n- **Schema validation**: Follows OpenAPI schema definitions\n- **Example data**: Prepopulated with sample values\n\n## Best practices\n\nThis section provides some basic practice guidelines.\n\n### Authentication\n\n- Always use separate machine accounts for test properties vs. properties in production.\n- When testing with production endpoint, make sure to use only test properties.\n\n### For Read operations (GET)\n- Safe to test in any environment\n- Use valid IDs that exist in your system\n- Check response structure for integration planning\n\n### For Write operations (POST, PUT)\n- **Always use static response first**\n- Verify request payload structure\n- Check response for success confirmation\n- Test error scenarios with invalid data\n\n### For Delete operations (DELETE)\n- **Use static response environment only**\n- Understand the operation is irreversible\n- Have backup data when testing using test properties\n\n## Troubleshooting\n\n### Common issues\n\n**401 Unauthorized**\n- Check authentication credentials\n- Verify API key is valid and not expired\n- Ensure credentials match the selected environment\n\n**400 Bad Request**\n- Validate request payload against schema\n- Check required fields are provided\n- Verify data types match specification\n\n**404 Not Found**\n- Confirm the resource ID exists\n- Check the endpoint URL is correct\n- Verify you have access to the resource\n\n### Getting help\n\nIf you encounter issues:\n1. Check the response error message for details\n2. Verify your request matches the API specification\n3. Contact the Connectivity Team for support\n\n---\n\n*This documentation applies to all endpoints in the Facilities API. The Try it feature provides a consistent testing experience across all operations.*"
    },
    {
      "name": "Manage property facilities",
      "description": "Use the GET and the PUT endpoints to:\n<ul><li>Retrieve property-level facilities details</li>\n<li>Add, modify or delete property-level facilities details<ul><li>Add single-instance facilities</li>\n<li>Add multi-instance facilities</li></ul></li></ul>\n"
    },
    {
      "name": "Manage room facilities",
      "description": "Use the GET and the PUT endpoints to:\n<ul><li>Retrieve room facilities set for a property.</li><li>Add, modify or delete room facilities.</li></ul>\n"
    },
    {
      "name": "Manage bathrooms",
      "description": "Use the GET and the PUT endpoints to:\n<ul><li>Retrieve room bathroom configuration</li>\n<li>Add, modify or delete room-level bathroom information</li></ul>\n"
    },
    {
      "name": "Meta data endpoint",
      "description": "<p>Retrieve the latest facility definitions.</p>\n<ul>\n<li>Get the list of all supported facilities<ul>\n<li>To get the details of a property-level facility: Look for a matching name under the facility_name in the response.\nTo add this facility, you must specify the facility_id.\nProperty-level facilities are listed under the property_facility_metas in the meta endpoint response.</li>\n<li>To get the details of the room-level facility: Look for a matching name under the room_facility_name in the response.\nTo add the facility, you must specify the room_facility_id.\nRoom-level facilities are listed under the room_facility_metas in the meta endpoint response.</li>\n</ul>\n</li>\n<li>Details of the facilities such as ID, OTA code and any optional parameters.</li>\n</ul>\n"
    }
  ],
  "x-tagGroups": [
    {
      "name": "API Endpoints",
      "tags": [
        "Manage property facilities",
        "Manage room facilities",
        "Manage bathrooms",
        "Meta data endpoint"
      ]
    },
    {
      "name": "Documentation",
      "tags": [
        "About Try it"
      ]
    }
  ],
  "paths": {
    "/properties/{propertyId}": {
      "get": {
        "tags": [
          "Manage property facilities"
        ],
        "summary": "Retrieve property-level facilities",
        "description": "Retrieve facility instance IDs along with the facility details for all the facility instances added to the property.",
        "operationId": "getFacilities",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "debugInfo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "false"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseListPropertyFacility"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Manage property facilities"
        ],
        "summary": "Add, update or remove property-level facilities",
        "description": "Add or update single or multi-instances facilities using this endpoint. Try any of the three request examples in the specification.\n\n\nTo delete a facility or all instances of a multi-instance facility (for example: all parking facility), you can change the facility state to `MISSING`.\n",
        "operationId": "setFacilities",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PropertyFacility"
                }
              },
              "examples": {
                "Add single-instance facilities": {
                  "description": "Add/update single-instance facilities",
                  "value": [
                    {
                      "facility_id": 418,
                      "state": "PRESENT"
                    },
                    {
                      "facility_id": 419,
                      "state": "MISSING"
                    }
                  ]
                },
                "Add single-instance facilities with additional details": {
                  "description": "Add/update multiple single-instance facilities with surcharge details",
                  "value": [
                    {
                      "facility_id": 70,
                      "instances": [
                        {
                          "on_site_details": {
                            "onsite_type": "OFFSITE"
                          },
                          "surcharge_details": {
                            "surcharge_type": "FREE"
                          }
                        }
                      ],
                      "state": "PRESENT"
                    }
                  ]
                },
                "Add multi-instance facilities": {
                  "description": "Add/update facility with multiple parking details",
                  "value": [
                    {
                      "facility_id": 2,
                      "instances": [
                        {
                          "parking_details": {
                            "name": "Diamond Parking",
                            "parking_location": "NEARBY",
                            "parking_access": "ONLY_GUESTS",
                            "parking_reservation": "NEEDED"
                          },
                          "payment_details": {
                            "charge_mode": "FREE"
                          }
                        },
                        {
                          "parking_details": {
                            "name": "Q-Park",
                            "parking_location": "ON_SITE",
                            "parking_access": "GENERAL_PUBLIC",
                            "parking_reservation": "NOT_NEEDED"
                          },
                          "payment_details": {
                            "charge_mode": "FREE"
                          }
                        }
                      ],
                      "state": "PRESENT"
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseSuccessObject"
                }
              }
            }
          }
        }
      }
    },
    "/properties/{propertyId}/rooms/{roomId}": {
      "get": {
        "tags": [
          "Manage room facilities"
        ],
        "summary": "Retrieve room facilities set for a property.",
        "description": "Retrieve the facility details for all the facility instances added to the rooms",
        "operationId": "getRoomFacilities",
        "parameters": [
          {
            "name": "roomId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "debugInfo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "false"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseListRoomFacility"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Manage room facilities"
        ],
        "summary": "Manage room-level facilities",
        "description": "Add, modify or delete room-level facilities details for a property",
        "operationId": "setRoomFacilities",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "roomId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RoomFacility"
                }
              },
              "examples": {
                "Room facilities without additional details": {
                  "description": "Room facilities without additional details",
                  "value": [
                    {
                      "room_facility_id": 1,
                      "state": "PRESENT"
                    },
                    {
                      "room_facility_id": 3,
                      "state": "MISSING"
                    }
                  ]
                },
                "Room facilities with additional details": {
                  "description": "Room facilities with additional details",
                  "value": [
                    {
                      "room_facility_id": 175,
                      "state": "PRESENT",
                      "room_facility_instances": [
                        {
                          "crib_details": {
                            "is_foldable": true,
                            "is_standalone": false
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseSuccessObject"
                }
              }
            }
          }
        }
      }
    },
    "/properties/{propertyId}/rooms/{roomId}/bathrooms": {
      "get": {
        "tags": [
          "Manage bathrooms"
        ],
        "summary": "Retrieve room bathroom configuration",
        "description": "Retrieve room bathroom configuration. Bathroom attached to rooms.",
        "operationId": "getBathroomDetails",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "roomId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseBathroomDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Manage bathrooms"
        ],
        "summary": "Manage bathrooms",
        "description": "Add, modify or delete room-level bathroom information",
        "operationId": "setBathroomDetails",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "roomId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BathroomDetails"
              },
              "examples": {
                "Enable hotel group bathrooms": {
                  "description": "Enable hotel group bathrooms",
                  "value": {
                    "hotel_bathroom_details": {
                      "shared_bathroom_state": "PRESENT",
                      "private_bathroom_state": "PRESENT",
                      "number_of_bathrooms": 3
                    }
                  }
                },
                "Add hotel group bathroom details": {
                  "description": "Add hotel group bathroom details",
                  "value": {
                    "hotel_bathroom_details": {
                      "shared_bathroom_state": "MISSING",
                      "private_bathroom_state": "PRESENT",
                      "private_bathroom_details": {
                        "type": "EXTERNAL_BATHROOM",
                        "location_type": "OTHER",
                        "location_other": "outside of the room"
                      },
                      "number_of_bathrooms": 2
                    }
                  }
                },
                "Add homes group bathroom details": {
                  "description": "Add homes group bathroom details",
                  "value": {
                    "property_bathroom_details": {
                      "bathrooms": [
                        {
                          "bathroom_type": "PRIVATE"
                        },
                        {
                          "bathroom_type": "SHARED"
                        }
                      ]
                    }
                  }
                },
                "Add homes group bathroom details with location": {
                  "description": "Add homes group bathroom details with location",
                  "value": {
                    "property_bathroom_details": {
                      "bathrooms": [
                        {
                          "bathroom_type": "PRIVATE",
                          "bathroom_location": "ENSUITE"
                        },
                        {
                          "bathroom_type": "SHARED",
                          "bathroom_location": "OPPOSITE_THE_ROOM"
                        }
                      ]
                    }
                  }
                },
                "Add hostel bathroom details": {
                  "description": "Add hostel bathroom details",
                  "value": {
                    "property_bathroom_details": {
                      "bathrooms": [
                        {
                          "bathroom_type": "PRIVATE",
                          "bathroom_location": "DOWN_THE_HALL",
                          "hostel_bathroom_details": {
                            "bathroom_facilities": [
                              {
                                "type": "SHOWER",
                                "count": 98
                              },
                              {
                                "type": "TOILET",
                                "count": 21
                              },
                              {
                                "type": "SINK",
                                "count": 68
                              },
                              {
                                "type": "BATH",
                                "count": 16
                              },
                              {
                                "type": "TOILET_PAPER"
                              },
                              {
                                "type": "HAIR_DRYER"
                              },
                              {
                                "type": "SLIPPERS",
                                "is_paid": true
                              },
                              {
                                "type": "BIDET"
                              },
                              {
                                "type": "TOOTHBRUSH",
                                "is_paid": true
                              },
                              {
                                "type": "SHAMPOO",
                                "is_paid": false
                              },
                              {
                                "type": "CONDITIONER",
                                "is_paid": false
                              },
                              {
                                "type": "BODY_SOAP",
                                "is_paid": true
                              },
                              {
                                "type": "TOWEL",
                                "is_paid": false
                              },
                              {
                                "type": "HOT_WATER"
                              }
                            ]
                          }
                        },
                        {
                          "bathroom_type": "SHARED",
                          "bathroom_location": "DOWN_THE_HALL",
                          "hostel_bathroom_details": {
                            "gender": "MIXED",
                            "num_guests_with_access_type": "NUMBER_LESS_THAN_5",
                            "bathroom_facilities": [
                              {
                                "type": "SHOWER",
                                "count": 98
                              },
                              {
                                "type": "TOILET",
                                "count": 21
                              },
                              {
                                "type": "SINK",
                                "count": 68
                              },
                              {
                                "type": "BATH",
                                "count": 16
                              },
                              {
                                "type": "TOILET_PAPER"
                              },
                              {
                                "type": "HAIR_DRYER"
                              },
                              {
                                "type": "SLIPPERS",
                                "is_paid": true
                              },
                              {
                                "type": "BIDET"
                              },
                              {
                                "type": "TOOTHBRUSH",
                                "is_paid": true
                              },
                              {
                                "type": "SHAMPOO",
                                "is_paid": false
                              },
                              {
                                "type": "CONDITIONER",
                                "is_paid": false
                              },
                              {
                                "type": "BODY_SOAP",
                                "is_paid": true
                              },
                              {
                                "type": "TOWEL",
                                "is_paid": true
                              },
                              {
                                "type": "HOT_WATER"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                },
                "Disable hotel group bathroom details": {
                  "description": "Disable hotel group bathroom details",
                  "value": {
                    "hotel_bathroom_details": {
                      "shared_bathroom_state": "MISSING",
                      "private_bathroom_state": "MISSING",
                      "number_of_bathrooms": 0
                    }
                  }
                },
                "Remove bathroom details for homes and hostel group": {
                  "description": "Remove bathroom details for homes and hostel group",
                  "value": {
                    "property_bathroom_details": {
                      "bathrooms": []
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseSuccessObject"
                }
              }
            }
          }
        }
      }
    },
    "/meta": {
      "get": {
        "tags": [
          "Meta data endpoint"
        ],
        "summary": "Retrieving facilities metadata",
        "description": "Explore available facilities, facility IDs and applicable details.",
        "operationId": "meta",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseFacilityMeta"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AgeLimitDetails": {
        "type": "object",
        "properties": {
          "age_limit": {
            "type": "string",
            "description": "Minimum age allowed",
            "enum": [
              "AGE_1",
              "AGE_2",
              "AGE_3",
              "AGE_4",
              "AGE_5",
              "AGE_6",
              "AGE_7",
              "AGE_8",
              "AGE_9",
              "AGE_10",
              "AGE_11",
              "AGE_12",
              "NO_RESTRICTION"
            ]
          }
        }
      },
      "ChargeDetails": {
        "type": "object",
        "properties": {
          "price": {
            "type": "number",
            "description": "Price, in property's currency",
            "format": "double"
          },
          "frequency": {
            "type": "string",
            "description": "Charging frequency",
            "enum": [
              "UNKNOWN_FREQUENCY",
              "PER_STAY",
              "PER_MINUTE",
              "PER_HALF_HOUR",
              "PER_HOUR",
              "PER_DAY",
              "PER_WEEK"
            ]
          }
        },
        "description": "Charge details"
      },
      "Daytime": {
        "type": "object",
        "properties": {
          "hours": {
            "maximum": 23,
            "minimum": 0,
            "type": "integer",
            "description": "Hours, in 24h format",
            "format": "int32"
          },
          "minutes": {
            "maximum": 59,
            "minimum": 0,
            "type": "integer",
            "description": "Minutes",
            "format": "int32"
          }
        },
        "description": "Definition of a time in the day"
      },
      "Instance": {
        "type": "object",
        "properties": {
          "instance_id": {
            "type": "integer",
            "description": "Instance ID",
            "format": "int32"
          },
          "restaurant_details": {
            "$ref": "#/components/schemas/RestaurantDetails"
          },
          "parking_details": {
            "$ref": "#/components/schemas/ParkingDetails"
          },
          "payment_details": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "swimming_pool_details": {
            "$ref": "#/components/schemas/SwimmingPoolDetails"
          },
          "internet_details": {
            "$ref": "#/components/schemas/InternetDetails"
          },
          "kids_pool_details": {
            "$ref": "#/components/schemas/KidsPoolDetails"
          },
          "on_site_details": {
            "$ref": "#/components/schemas/OnSiteDetails"
          },
          "age_limit_details": {
            "$ref": "#/components/schemas/AgeLimitDetails"
          },
          "schedule_details": {
            "$ref": "#/components/schemas/ScheduleDetails"
          },
          "temporarily_closed_details": {
            "$ref": "#/components/schemas/TemporarilyClosedDetails"
          },
          "surcharge_details": {
            "$ref": "#/components/schemas/SurchargeDetails"
          },
          "meal_details": {
            "$ref": "#/components/schemas/MealDetails"
          }
        },
        "description": "Property Facility Instance"
      },
      "InternetDetails": {
        "required": [
          "area",
          "type"
        ],
        "type": "object",
        "properties": {
          "area": {
            "type": "string",
            "description": "Connection location",
            "default": "PUBLIC_AREAS",
            "enum": [
              "UNKNOWN_COVERAGE",
              "ALL_ROOMS",
              "SOME_ROOMS",
              "PUBLIC_AREAS",
              "BUSINESS_CENTER",
              "ENTIRE_PROPERTY"
            ]
          },
          "type": {
            "type": "string",
            "description": "Connection type",
            "default": "WIFI",
            "enum": [
              "NONE",
              "WIRED",
              "WIFI"
            ]
          },
          "wifi_info": {
            "$ref": "#/components/schemas/WifiInfo"
          }
        },
        "description": "Defines details of the Internet connection"
      },
      "KidsPoolDetails": {
        "type": "object",
        "properties": {
          "swimming_pool_dimensions": {
            "$ref": "#/components/schemas/SwimmingPoolDimensions"
          },
          "has_shallow_end": {
            "type": "boolean",
            "description": "Is there a shallow end?",
            "default": false
          }
        }
      },
      "MealDetails": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "breakfast_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "CONTINENTAL",
                "ITALIAN",
                "FULL_ENGLISH",
                "VEGETARIAN",
                "VEGAN",
                "HALAL",
                "GLUTEN_FREE",
                "KOSHER",
                "ASIAN",
                "AMERICAN",
                "BUFFET",
                "A_LA_CARTE",
                "BREAKFAST_TO_GO"
              ]
            }
          },
          "breakfast_food_item_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BREAD",
                "PASTRIES",
                "PANCAKES",
                "BUTTER",
                "CHEESE",
                "COLD_MEAT",
                "EGGS",
                "YOGURT",
                "FRUITS",
                "COFFEE",
                "TEA",
                "HOT_CHOCOLATE",
                "CHAMPAGNE",
                "A_LA_CARTE",
                "LOCAL_SPECIALITY",
                "COOKED_MEAL",
                "JUICE",
                "JAM",
                "CEREAL"
              ]
            }
          },
          "price": {
            "maximum": 99999999999999.98,
            "minimum": 0.1,
            "type": "number"
          }
        }
      },
      "OnSiteDetails": {
        "type": "object",
        "properties": {
          "onsite_type": {
            "type": "string",
            "description": "Facility location",
            "enum": [
              "DEFAULT",
              "ONSITE",
              "OFFSITE"
            ]
          }
        },
        "description": "Facility location details"
      },
      "ParkingDetails": {
        "required": [
          "name",
          "parking_access",
          "parking_location",
          "parking_reservation"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name"
          },
          "parking_type": {
            "type": "string",
            "description": "Type of parking. Corresponding legacy object in HDCN: ParkingFeePolicy/@ParkingType",
            "default": "UNKNOWN_PARKING_TYPE",
            "enum": [
              "UNKNOWN_PARKING_TYPE",
              "PARKING_GARAGE",
              "PARKING_LOT",
              "STREET_PARKING"
            ]
          },
          "parking_location": {
            "type": "string",
            "description": "Where is this parking located?",
            "enum": [
              "ON_SITE",
              "NEARBY"
            ]
          },
          "parking_access": {
            "type": "string",
            "description": "Who can park here? Corresponding legacy object in HDCN: ParkingFeePolicy/@ParkingProperty",
            "enum": [
              "ONLY_GUESTS",
              "GENERAL_PUBLIC"
            ]
          },
          "parking_reservation": {
            "type": "string",
            "description": "Is reservation possible/required?",
            "enum": [
              "NEEDED",
              "NOT_NEEDED",
              "NOT_POSSIBLE"
            ]
          },
          "max_height_m": {
            "maximum": 200,
            "minimum": 0,
            "type": "number",
            "description": "Height limit for cars. Corresponding legacy object in HDCN: ParkingFeePolicy/@ParkingReservation",
            "format": "double"
          },
          "has_valet_service": {
            "type": "string",
            "description": "Valet service available",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          },
          "has_onsite_staff": {
            "type": "string",
            "description": "Staff at the parking area",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          },
          "has_gated_parking": {
            "type": "string",
            "description": "Gate at the entrance / exit",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          },
          "has_security_cameras": {
            "type": "string",
            "description": "Security camera",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          },
          "has_ev_charging_station": {
            "type": "string",
            "description": "Electric vehicle charging station",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          },
          "has_accessible_parking_spots": {
            "type": "string",
            "description": "Accessible parking",
            "default": "NOT_SPECIFIED",
            "enum": [
              "NOT_SPECIFIED",
              "PRESENT",
              "MISSING"
            ]
          }
        },
        "description": "Parking Details"
      },
      "PaymentDetails": {
        "required": [
          "charge_mode"
        ],
        "type": "object",
        "properties": {
          "charge_mode": {
            "type": "string",
            "description": "Charge mode",
            "enum": [
              "UNKNOWN_CHARGE_MODE",
              "FREE",
              "PAID",
              "CHARGES_MAY_APPLY"
            ]
          },
          "charge_details": {
            "$ref": "#/components/schemas/ChargeDetails"
          }
        },
        "description": "Payment Details"
      },
      "PropertyFacility": {
        "required": [
          "facility_id",
          "state"
        ],
        "type": "object",
        "properties": {
          "facility_id": {
            "type": "integer",
            "description": "Property Facility ID",
            "format": "int32"
          },
          "instances": {
            "type": "array",
            "description": "Array of instances",
            "items": {
              "$ref": "#/components/schemas/Instance"
            }
          },
          "state": {
            "type": "string",
            "description": "Is facility Present/Missing?",
            "enum": [
              "MISSING",
              "PRESENT"
            ]
          },
          "property_facility_meta": {
            "$ref": "#/components/schemas/PropertyFacilityMeta"
          },
          "facilityMetaType": {
            "$ref": "#/components/schemas/PropertyFacilityMeta"
          }
        },
        "description": "Property Facility object"
      },
      "DetailsType": {
        "type": "string",
        "description": "Name of a details object that can be used in facility instances",
        "enum": [
          "AgeLimitDetails",
          "ChargeDetails",
          "InternetDetails",
          "KidsPoolDetails",
          "OnSiteDetails",
          "ParkingDetails",
          "PaymentDetails",
          "RestaurantDetails",
          "ScheduleDetails",
          "SurchargeDetails",
          "SwimmingPoolDetails",
          "TemporarilyClosedDetails"
        ]
      },
      "PropertyFacilityMeta": {
        "type": "object",
        "properties": {
          "facility_id": {
            "type": "integer",
            "description": "Booking.com Facility ID",
            "format": "int32"
          },
          "ota_hotel_amenity_type": {
            "type": "integer",
            "description": "OTA HAC (HotelAmenityCode)",
            "format": "int32"
          },
          "booking_extended_legacy_code": {
            "type": "integer",
            "description": "[Legacy] Booking.com Extended HAC Facility Code",
            "format": "int32"
          },
          "facility_name": {
            "type": "string",
            "description": "Name"
          },
          "allowed_details_list": {
            "type": "array",
            "description": "List of applicable details types for this facility. Each item is the name of a details object that may be used in facility instances (for example: 'ScheduleDetails', 'SurchargeDetails').",
            "items": {
              "$ref": "#/components/schemas/DetailsType"
            }
          },
          "required_details_list": {
            "type": "array",
            "description": "List of required details types for this facility. Each item is the name of a details object that must be provided in facility instances.",
            "items": {
              "$ref": "#/components/schemas/DetailsType"
            }
          }
        },
        "description": "DEBUG ONLY. Contains Property Facility meta"
      },
      "RestaurantDetails": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name"
          },
          "guests_only": {
            "type": "boolean",
            "description": "Open only to guests staying at the property"
          },
          "accept_reservations": {
            "type": "boolean",
            "description": "Reservations welcomed"
          },
          "outdoor_seating": {
            "type": "boolean",
            "description": "Outdoor seating"
          },
          "meal_types_list": {
            "type": "array",
            "description": "Dietary options. Corresponding legacy object in HDCN: Restaurant/TPA_Extensions/@DietaryOption",
            "items": {
              "type": "string",
              "enum": [
                "UNKNOWN_MEAL_TYPE",
                "HALAL",
                "KOSHER",
                "VEGETARIAN",
                "VEGAN",
                "GLUTEN_FREE",
                "DAIRY_FREE"
              ]
            }
          },
          "ambiances_list": {
            "type": "array",
            "description": "Ambiance types. Corresponding legacy object in HDCN: Restaurant/TPA_Extensions/@Ambiance",
            "items": {
              "type": "string",
              "enum": [
                "UNKNOWN_AMBIANCE",
                "FAMILY_KIDS_FRIENDLY",
                "TRADITIONAL",
                "MODERN",
                "ROMANTIC"
              ]
            }
          },
          "open_for_meals_list": {
            "type": "array",
            "description": "Open for which meals? Corresponding legacy object in HDCN: Restaurant/ @OfferBreakfast,  @OfferBrunch, @OfferLunch, @OfferDinner",
            "items": {
              "type": "string",
              "enum": [
                "UNKNOWN_OPEN_FOR_MEALS",
                "BREAKFAST",
                "BRUNCH",
                "LUNCH",
                "DINNER",
                "HIGH_TEA",
                "COCKTAIL_HOUR"
              ]
            }
          },
          "cuisines_list": {
            "type": "array",
            "description": "Cuisine. Corresponding legacy object in HDCN: Restaurant/CuisineCodes",
            "items": {
              "type": "string",
              "enum": [
                "UNKNOWN_CUISINE",
                "AFRICAN",
                "AMERICAN",
                "ARGENTINIAN",
                "BELGIAN",
                "BRAZILIAN",
                "CAJUN_CREOLE",
                "CAMBODIAN",
                "CANTONESE",
                "CARIBBEAN",
                "CATALAN",
                "CHINESE",
                "DUTCH",
                "BRITISH",
                "ETHIOPIAN",
                "FRENCH",
                "GREEK",
                "INDIAN",
                "INDONESIAN",
                "IRISH",
                "ITALIAN",
                "JAPANESE",
                "KOREAN",
                "MALAYSIAN",
                "MEDITERRANEAN",
                "MEXICAN",
                "MIDDLE_EASTERN",
                "MOROCCAN",
                "NEPALESE",
                "PERUVIAN",
                "PIZZA",
                "POLISH",
                "PORTUGUESE",
                "SCOTTISH",
                "SEAFOOD",
                "SICHUAN",
                "SINGAPOREAN",
                "SPANISH",
                "STEAKHOUSE",
                "SUSHI",
                "TEXMEX",
                "THAI",
                "TURKISH",
                "VIETNAMESE",
                "AUSTRIAN",
                "AUSTRALIAN",
                "GERMAN",
                "RUSSIAN",
                "LOCAL",
                "ASIAN",
                "INTERNATIONAL",
                "LATIN_AMERICAN",
                "EUROPEAN",
                "CROATIAN",
                "HUNGARIAN",
                "GRILL_BBQ",
                "SOUTH_AFRICAN"
              ]
            }
          },
          "is_buffet": {
            "type": "boolean",
            "description": "Buffet menu"
          },
          "is_alacarte": {
            "type": "boolean",
            "description": "A la carte menu"
          }
        }
      },
      "ScheduleDetails": {
        "type": "object",
        "properties": {
          "schedule": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekTimeEntry"
            }
          }
        },
        "description": "Defines a schedule for a Facility. Corresponding legacy object in HDCN: OperationTimes"
      },
      "SurchargeDetails": {
        "type": "object",
        "properties": {
          "surcharge_type": {
            "type": "string",
            "description": "Surcharge type (free/paid)",
            "enum": [
              "DEFAULT",
              "FREE",
              "PAID"
            ]
          }
        },
        "description": "Surcharge Details"
      },
      "SwimmingPoolDetails": {
        "required": [
          "name",
          "swimming_pool_type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "swimming_pool_type": {
            "type": "string",
            "description": "Swimming Pool Type",
            "default": "UNKNOWN_AVAILABILITY",
            "enum": [
              "UNKNOWN_POOL_TYPE",
              "INDOOR",
              "OUTDOOR",
              "INDOOR_AND_OUTDOOR"
            ]
          },
          "availability_type": {
            "type": "string",
            "description": "Availability",
            "default": "UNKNOWN_AVAILABILITY",
            "enum": [
              "UNKNOWN_AVAILABILITY",
              "ALL_SEASON",
              "SEASONABLE"
            ]
          },
          "allowed_age_type": {
            "type": "string",
            "description": "Age restrictions",
            "default": "UNKNOWN_AGE_TYPE",
            "enum": [
              "UNKNOWN_AGE_TYPE",
              "ADULTS_ONLY",
              "KIDS_ONLY",
              "ALL_AGES"
            ]
          },
          "has_loungers": {
            "type": "boolean",
            "description": "Loungers available"
          },
          "has_water_slide": {
            "type": "boolean",
            "description": "Water slide"
          },
          "has_pool_bar": {
            "type": "boolean",
            "description": "Pool bar"
          },
          "has_pool_cover": {
            "type": "boolean",
            "description": "Pool cover"
          },
          "has_free_towels": {
            "type": "boolean",
            "description": "Free towels"
          },
          "has_pool_toys": {
            "type": "boolean",
            "description": "Pool toys"
          },
          "has_sun_umbrellas": {
            "type": "boolean",
            "description": "Sun umbrellas"
          },
          "has_fence_around_pool": {
            "type": "boolean",
            "description": "Safety fence"
          },
          "has_snake_trap": {
            "type": "boolean",
            "description": "Has a snake trap"
          },
          "is_shared": {
            "type": "boolean",
            "description": "Is the swimming pool shared?"
          },
          "is_rooftop": {
            "type": "boolean",
            "description": "Is a rooftop pool?"
          },
          "is_shallow_end": {
            "type": "boolean",
            "description": "Is there a shallow end?"
          },
          "is_infinity": {
            "type": "boolean",
            "description": "Is an infinity pool?"
          },
          "is_heated": {
            "type": "boolean",
            "description": "Is a heated pool?"
          },
          "is_salt_water": {
            "type": "boolean",
            "description": "Is a salt water pool?"
          },
          "is_pool_with_view": {
            "type": "boolean",
            "description": "Scenic view"
          },
          "is_plunge_pool": {
            "type": "boolean",
            "description": "Is a plunge pool?"
          }
        }
      },
      "SwimmingPoolDimensions": {
        "type": "object",
        "properties": {
          "length": {
            "type": "number",
            "description": "Pool length",
            "format": "double"
          },
          "width": {
            "type": "number",
            "description": "Pool width",
            "format": "double"
          },
          "depth_min": {
            "type": "number",
            "description": "Pool minimal depth",
            "format": "double"
          },
          "depth_max": {
            "type": "number",
            "description": "Pool maximal depth",
            "format": "double"
          },
          "unit": {
            "type": "string",
            "description": "Measurement unit",
            "enum": [
              "METER"
            ]
          }
        }
      },
      "TemporarilyClosedDetails": {
        "type": "object",
        "properties": {
          "closed": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemporarilyClosedEntry"
            }
          }
        },
        "description": "Temporarily Closed Facility Details"
      },
      "TemporarilyClosedEntry": {
        "type": "object",
        "properties": {
          "start_date": {
            "$ref": "#/components/schemas/StartTimestamp"
          },
          "end_date": {
            "$ref": "#/components/schemas/EndTimestamp"
          }
        },
        "description": "A range of dates"
      },
      "StartTimestamp": {
        "type": "object",
        "properties": {
          "epoch_seconds": {
            "type": "integer",
            "format": "int64"
          }
        },
        "description": "Start date"
      },
      "EndTimestamp": {
        "type": "object",
        "properties": {
          "epoch_seconds": {
            "type": "integer",
            "format": "int64"
          }
        },
        "description": "End date"
      },
      "WeekTimeEntry": {
        "required": [
          "day_of_week",
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "from": {
            "$ref": "#/components/schemas/Daytime"
          },
          "to": {
            "$ref": "#/components/schemas/Daytime"
          },
          "day_of_week": {
            "type": "string",
            "description": "Day of the week. Corresponding legacy object in HDCN: OperationTimes/OperationTime/",
            "enum": [
              "UNKNOWN_DAY",
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY",
              "SUNDAY"
            ]
          }
        },
        "description": "Describes opening times on a certain day of week"
      },
      "WifiInfo": {
        "type": "object",
        "properties": {
          "network_name": {
            "type": "string",
            "description": "Wi-fi network name (SSID)"
          },
          "speed_download": {
            "type": "number",
            "description": "Download speed, mbps",
            "format": "double"
          },
          "speed_upload": {
            "type": "number",
            "description": "Upload speed, mbps",
            "format": "double"
          }
        },
        "description": "Provides information about Wi-Fi connection"
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "details": {
            "type": "object"
          }
        }
      },
      "ApiResponseSuccessObject": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SuccessObject"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          }
        }
      },
      "ResponseMeta": {
        "type": "object",
        "properties": {
          "ruid": {
            "type": "string"
          }
        }
      },
      "SuccessObject": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "CribDetails": {
        "type": "object",
        "properties": {
          "is_foldable": {
            "type": "boolean",
            "description": "Foldable",
            "default": false
          },
          "is_standalone": {
            "type": "boolean",
            "description": "Standalone",
            "default": false
          }
        },
        "description": "Crib Details"
      },
      "LinenDetails": {
        "type": "object",
        "properties": {
          "has_crib_linen": {
            "type": "boolean",
            "description": "Crib (cot) linen",
            "default": false
          },
          "has_fitted_sheet": {
            "type": "boolean",
            "description": "Fitted sheet",
            "default": false
          },
          "has_top_sheet": {
            "type": "boolean",
            "description": "Top sheet",
            "default": false
          },
          "has_blanket": {
            "type": "boolean",
            "description": "Blanket",
            "default": false
          },
          "has_extra_blankets": {
            "type": "boolean",
            "description": "Extra blankets",
            "default": false
          },
          "has_pillow": {
            "type": "boolean",
            "description": "Pillow",
            "default": false
          },
          "has_mattress_protector": {
            "type": "boolean",
            "description": "Mattress protector",
            "default": false
          }
        },
        "description": "Linen Details"
      },
      "RoomFacility": {
        "required": [
          "room_facility_id",
          "state"
        ],
        "type": "object",
        "properties": {
          "room_facility_id": {
            "type": "integer",
            "description": "Room Facility ID",
            "format": "int32"
          },
          "state": {
            "type": "string",
            "description": "Is facility Present/Missing?",
            "enum": [
              "MISSING",
              "PRESENT"
            ]
          },
          "room_facility_instances": {
            "type": "array",
            "description": "List of Room Facility Instances",
            "items": {
              "$ref": "#/components/schemas/RoomFacilityInstance"
            }
          },
          "room_facility_meta": {
            "$ref": "#/components/schemas/RoomFacilityMeta"
          },
          "facilityMetaType": {
            "$ref": "#/components/schemas/RoomFacilityMeta"
          }
        }
      },
      "RoomFacilityInstance": {
        "type": "object",
        "properties": {
          "linen_details": {
            "$ref": "#/components/schemas/LinenDetails"
          },
          "crib_details": {
            "$ref": "#/components/schemas/CribDetails"
          }
        },
        "description": "List of Room Facility Instances"
      },
      "RoomFacilityMeta": {
        "type": "object",
        "properties": {
          "room_facility_id": {
            "type": "integer",
            "description": "Booking.com Room Facility ID",
            "format": "int32"
          },
          "ota_room_amenity_type": {
            "type": "integer",
            "description": "OTA RMA (Room Amenity Type Code)",
            "format": "int32"
          },
          "booking_extended_legacy_code": {
            "type": "integer",
            "description": "[Legacy] Booking.com Extended RMA Room Facility Code",
            "format": "int32"
          },
          "room_facility_name": {
            "type": "string",
            "description": "Name"
          },
          "allowed_details_list": {
            "type": "array",
            "description": "List of applicable Details Objects",
            "items": {
              "type": "object",
              "description": "List of applicable Details Objects",
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CribDetails"
                },
                {
                  "$ref": "#/components/schemas/LinenDetails"
                }
              ]
            }
          }
        },
        "description": "DEBUG ONLY. Contains Room Facility meta"
      },
      "Bathroom": {
        "required": [
          "bathroom_type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "bathroom_type": {
            "type": "string",
            "enum": [
              "PRIVATE",
              "SHARED"
            ]
          },
          "bathroom_location": {
            "type": "string",
            "enum": [
              "ENSUITE",
              "NEXT_DOOR",
              "DOWN_THE_HALL",
              "OPPOSITE_THE_ROOM",
              "IN_THE_HALLWAY",
              "OTHER",
              "INSIDE_THE_UNIT"
            ]
          },
          "hostel_bathroom_details": {
            "$ref": "#/components/schemas/HostelBathroomDetails"
          }
        }
      },
      "BathroomDetails": {
        "type": "object",
        "properties": {
          "property_bathroom_details": {
            "$ref": "#/components/schemas/PropertyBathroomDetails"
          },
          "hotel_bathroom_details": {
            "$ref": "#/components/schemas/HotelBathroomDetails"
          }
        }
      },
      "HostelBathroomDetails": {
        "required": [
          "bathroom_facilities"
        ],
        "type": "object",
        "properties": {
          "gender": {
            "type": "string",
            "enum": [
              "FEMALE",
              "MALE",
              "MIXED"
            ]
          },
          "num_guests_with_access_type": {
            "type": "string",
            "enum": [
              "NUMBER_LESS_THAN_5",
              "NUMBER_5_TO_10",
              "NUMBER_11_TO_20",
              "NUMBER_21_TO_30",
              "NUMBER_31_TO_40",
              "NUMBER_41_TO_50",
              "NUMBER_MORE_THAN_50"
            ]
          },
          "bathroom_facilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HostelBathroomFacility"
            }
          }
        }
      },
      "HostelBathroomFacility": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "SHOWER",
              "TOILET",
              "SINK",
              "BATH",
              "TOILET_PAPER",
              "HAIR_DRYER",
              "SLIPPERS",
              "BIDET",
              "TOOTHBRUSH",
              "SHAMPOO",
              "CONDITIONER",
              "BODY_SOAP",
              "TOWEL",
              "HOT_WATER"
            ]
          },
          "count": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "is_paid": {
            "type": "boolean"
          }
        }
      },
      "HotelBathroomDetails": {
        "required": [
          "number_of_bathrooms",
          "private_bathroom_state",
          "shared_bathroom_state"
        ],
        "type": "object",
        "properties": {
          "private_bathroom_state": {
            "type": "string",
            "enum": [
              "MISSING",
              "PRESENT"
            ]
          },
          "shared_bathroom_state": {
            "type": "string",
            "enum": [
              "MISSING",
              "PRESENT"
            ]
          },
          "private_bathroom_details": {
            "$ref": "#/components/schemas/PrivateBathroomDetails"
          },
          "number_of_bathrooms": {
            "maximum": 20,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PrivateBathroomDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "EXTERNAL_BATHROOM",
              "ATTACHED_BATHROOM"
            ]
          },
          "location_type": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "NEXT_DOOR",
              "DOWN_THE_HALL",
              "ACROSS_FROM_THE_ROOM",
              "IN_THE_LOBBY",
              "OTHER"
            ]
          },
          "location_other": {
            "type": "string"
          }
        }
      },
      "PropertyBathroomDetails": {
        "required": [
          "bathrooms"
        ],
        "type": "object",
        "properties": {
          "bathrooms": {
            "maxItems": 20,
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bathroom"
            }
          }
        }
      },
      "ApiResponseListPropertyFacility": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyFacility"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          }
        }
      },
      "ApiResponseListRoomFacility": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoomFacility"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          }
        }
      },
      "ApiResponseBathroomDetails": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BathroomDetails"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          }
        }
      },
      "ApiResponseFacilityMeta": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FacilityMeta"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          }
        }
      },
      "BathroomConfiguration": {
        "type": "object",
        "properties": {
          "unit_type_id": {
            "type": "integer",
            "format": "int32"
          },
          "unit_type_name": {
            "type": "string"
          },
          "allowed_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BathroomOptions"
            }
          }
        }
      },
      "BathroomOptions": {
        "type": "object",
        "properties": {
          "bathroom_type": {
            "type": "string",
            "enum": [
              "PRIVATE",
              "SHARED"
            ]
          },
          "bathroom_locations": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ENSUITE",
                "NEXT_DOOR",
                "DOWN_THE_HALL",
                "OPPOSITE_THE_ROOM",
                "IN_THE_HALLWAY",
                "OTHER",
                "INSIDE_THE_UNIT"
              ]
            }
          }
        }
      },
      "FacilityMeta": {
        "type": "object",
        "properties": {
          "property_facility_metas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyFacilityMeta"
            }
          },
          "room_facility_metas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoomFacilityMeta"
            }
          },
          "bathroom_configurations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BathroomConfiguration"
            }
          }
        },
        "description": "Contains meta data about property & room facilities"
      }
    }
  }
}