---
title: "Update a room"
method: PATCH
path: "/rooms/{room_id}"
tags: ["Stays"]
---

# Update a room

`PATCH /rooms/{room_id}`

## Request

- Base URL: `https://api.aisle.wedding/v1`
- URL: `https://api.aisle.wedding/v1/rooms/{room_id}`
- Auth: HTTP bearer

Validates every field, including a property move, before one wedding-scoped room update. A room with an accommodation payment in progress returns 409 conflict. Retrying the same body converges on the same room state; v1 does not persist a general idempotency key.

## Path parameters

- `room_id` string, required

## Request body

- object
  - `name` string
  - `type` string, nullable
  - `description` string, nullable
  - `capacity` integer
  - `capacity_max` integer, nullable
  - `bed_config` string, nullable
  - `images` string[]
  - `check_in_date` string, date, nullable
  - `check_out_date` string, date, nullable
  - `check_in_time` string, nullable
  - `check_out_time` string, nullable
  - `check_in_notes` string, nullable
  - `booking_url` string, nullable
  - `price_unit` 'room' | 'night' | 'party' | 'head'
  - `price_amount` union
    - number
    - string
  - `deposit_unit` 'percent' | 'amount'
  - `deposit_amount` union
    - number
    - string
  - `deposit_due_date` string, date, nullable
  - `balance_due_date` string, date, nullable
  - `requires_payment` boolean
  - `status` 'available' | 'unavailable'
  - `property_id` string

## Response `200`

The requested data.

- RoomResult
  - `data` PublicRoom, required
    - `id` string, required
    - `property_id` string, nullable, required
    - `name` string, required
    - `type` string, nullable, required
    - `description` string, nullable, required
    - `capacity` integer, required
    - `capacity_max` integer, nullable, required
    - `bed_config` string, nullable, required
    - `images` string[], required
    - `status` 'available' | 'unavailable', required
    - `booking_url` string, nullable, required
    - `booked_by_party_id` string, nullable, required
    - `stay` PublicStay, required
      - `check_in_date` string, date, nullable, required
      - `check_out_date` string, date, nullable, required
      - `check_in_time` string, nullable, required
      - `check_out_time` string, nullable, required
      - `check_in_notes` string, nullable, required
    - `rate` object, required
      - `requires_payment` boolean, required
      - `unit` 'room' | 'night' | 'party' | 'head', required
      - `amount` string, nullable, required
    - `payment_schedule` PublicPaymentSchedule, required
      - `deposit_unit` 'percent' | 'amount', nullable, required
      - `deposit_amount` string, nullable, required
      - `deposit_due_date` string, date, nullable, required
      - `balance_due_date` string, date, nullable, required
    - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
    - `updated_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.

## Other responses

- `400`: The request itself could not be read, such as a body that is not a JSON object. A field we refuse is validation_failed instead.
- `401`: The API key is missing, malformed, or no longer valid.
- `402`: The operation requires an active Aisle membership for this wedding.
- `403`: The key is valid but not permitted to do this.
- `404`: No such resource inside the key's wedding.
- `405`: That HTTP method is not supported here. See the Allow header.
- `409`: The request collided with the current state of the resource.
- `415`: A request body must be sent as application/json.
- `422`: The request was well-formed but a field was not acceptable. Every field at fault is named in error.details.
- `429`: Too many requests. Retry after the time given in Retry-After.
- `500`: Something went wrong on our side.

---

[API](https://skmtc.dev/aisle/apis/aisle-api.md) · [All operations](https://skmtc.dev/aisle/apis/aisle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aisle/apis/aisle-api/revisions/689a2f2420cc?raw)
