# Manage bathrooms

Add, modify or delete room-level bathroom information.
**Important — overlay semantics:** This endpoint uses full-replace mode. Any bathroom definition absent from the request body is permanently deleted. Before updating existing bathroom configuration, call `GET /facilities-api/properties/{propertyId}/rooms/{roomId}/bathrooms` to retrieve the current state, then include all existing bathroom entries in your PUT body alongside any changes.

Endpoint: PUT /facilities-api/properties/{propertyId}/rooms/{roomId}/bathrooms
Version: 1.0

## Path parameters:

  - `propertyId` (integer, required)

  - `roomId` (integer, required)

## Request fields (application/json):

  - `property_bathroom_details` (object)

  - `property_bathroom_details.bathrooms` (array, required)

  - `property_bathroom_details.bathrooms.id` (integer)

  - `property_bathroom_details.bathrooms.bathroom_type` (string, required)
    Enum: "PRIVATE", "SHARED"

  - `property_bathroom_details.bathrooms.bathroom_location` (string)
    Location of the bathroom relative to the room. The set of allowed values differs by unit type — call `GET /facilities-api/meta` and inspect `bathroom_configurations[*].allowed_options` for the applicable `unit_type_id`. Submitting a location not in the allowed list for your unit type returns a 400 error. Note: BED_IN_DORMITORY (unit_type_id 26) does not allow a location for private bathrooms.
    Enum: "ENSUITE", "NEXT_DOOR", "DOWN_THE_HALL", "OPPOSITE_THE_ROOM", "IN_THE_HALLWAY", "OTHER", "INSIDE_THE_UNIT"

  - `property_bathroom_details.bathrooms.hostel_bathroom_details` (object)
    Bathroom details for hostel-group properties. Property-level limits apply: maximum 1 private bathroom and 5 shared bathrooms per property. Rules for `gender` and `num_guests_with_access_type` differ by `bathroom_type`: required for SHARED bathrooms, prohibited for PRIVATE bathrooms.

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.gender` (string)
    Gender access for this shared bathroom. Required when `bathroom_type` is SHARED. Must not be provided when `bathroom_type` is PRIVATE.
    Enum: "FEMALE", "MALE", "MIXED"

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.num_guests_with_access_type` (string)
    Approximate number of guests with access to this shared bathroom. Required when `bathroom_type` is SHARED. Must not be provided when `bathroom_type` is PRIVATE.
    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"

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.bathroom_facilities` (array, required)
    List of facilities in this bathroom. Must include at least one of: SHOWER, TOILET, SINK, BATH.

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.bathroom_facilities.type` (string, required)
    Enum: "SHOWER", "TOILET", "SINK", "BATH", "TOILET_PAPER", "HAIR_DRYER", "SLIPPERS", "BIDET", "TOOTHBRUSH", "SHAMPOO", "CONDITIONER", "BODY_SOAP", "TOWEL", "HOT_WATER"

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.bathroom_facilities.count` (integer)
    Number of units of this facility. Only applicable to SHOWER, TOILET, SINK, and BATH. Must not be provided for other facility types.

  - `property_bathroom_details.bathrooms.hostel_bathroom_details.bathroom_facilities.is_paid` (boolean)
    Whether guests are charged for this amenity. Only applicable to SLIPPERS, TOOTHBRUSH, SHAMPOO, CONDITIONER, BODY_SOAP, and TOWEL. Must not be provided for other facility types.

  - `hotel_bathroom_details` (object)
    Bathroom details for hotel-group properties. Consistency rules: if both `private_bathroom_state` and `shared_bathroom_state` are MISSING, `number_of_bathrooms` must be 0. If either state is PRESENT, `number_of_bathrooms` must be greater than 0.

  - `hotel_bathroom_details.private_bathroom_state` (string, required)
    Whether the property has private bathrooms. If PRESENT, `number_of_bathrooms` must be greater than 0.
    Enum: "MISSING", "PRESENT"

  - `hotel_bathroom_details.shared_bathroom_state` (string, required)
    Whether the property has shared bathrooms. If PRESENT, `number_of_bathrooms` must be greater than 0.
    Enum: "MISSING", "PRESENT"

  - `hotel_bathroom_details.private_bathroom_details` (object)

  - `hotel_bathroom_details.private_bathroom_details.type` (string)
    Enum: "DEFAULT", "EXTERNAL_BATHROOM", "ATTACHED_BATHROOM"

  - `hotel_bathroom_details.private_bathroom_details.location_type` (string)
    Enum: "DEFAULT", "NEXT_DOOR", "DOWN_THE_HALL", "ACROSS_FROM_THE_ROOM", "IN_THE_LOBBY", "OTHER"

  - `hotel_bathroom_details.private_bathroom_details.location_other` (string)

  - `hotel_bathroom_details.number_of_bathrooms` (integer, required)
    Total number of bathrooms (private + shared combined). Must be 0 if both states are MISSING. Must be greater than 0 if either state is PRESENT.

## Response 200 fields (application/json):

  - `data` (object)

  - `data.success` (boolean)

  - `warnings` (array)

  - `errors` (array)

  - `meta` (object)

  - `meta.ruid` (string)

## Response 400 fields (application/json):

  - `data` (object)

  - `data.success` (boolean)

  - `warnings` (array)

  - `warnings.message` (string)

  - `warnings.code` (integer)
    Error code

  - `warnings.description` (string)
    Detailed error description

  - `warnings.details` (object)
    Additional error context

  - `errors` (array)

  - `meta` (object)

  - `meta.ruid` (string)

