Skip to content
Docs
English
Esc
navigateopen⌘Jpreview

Update a room

Partial update of a room. Supports basic fields (name, code, personCapacity, addressNotes, locationId, isOnline, onlineLink), immediate status, and relation sync via amenityIds, courseIds, and moduleIds — each array replaces the full linked set when provided. Discover amenities via GET /amenities. Pass scheduledStatusChange to create a future or temporary availability window in the same request (returns 409 on overlap). When provided, personCapacity must be at least 1 unless isOnline is true. Scoped to your integration’s institution via Basic Auth credentials.

PATCH/rooms/{id}
Path parameters
idstringrequired
Request body
requiredapplication/json
namestring
Display name for the room, shown in the dashboard and when scheduling appointments (e.g. `Lecture Hall A`, `Seminar Room 3`).
max length 100
personCapacityinteger
Maximum number of people the room holds. Required on create. Must be at least `1` for physical rooms (`isOnline: false` or omitted). Use `0` only when `isOnline` is `true`.
min 0 · max 1000
codestring
Optional short identifier for the room. When omitted or empty, a unique code is auto-generated from `name`.
max length 50
addressNotesstring
Optional free-text notes for finding or accessing the room (e.g. directions, door codes, wheelchair access).
max length 1000
amenityIdsstring[]
Optional IDs of equipment/amenities to link to the room (e.g. `Projector`, `Whiteboard`). Discover available amenities via GET /amenities. Amenities must belong to your institution.
locationIdstring | null
Optional ID of a location (campus/building) this room belongs to. Pass `null` to leave the room unassigned.
statusstring
Room availability status in the dashboard. Defaults to `ACTIVE` on create; use `MAINTENANCE` or `INACTIVE` to hide or restrict booking. For `scheduledStatusChange`, this is the status applied during the scheduled window.
Allowed:ACTIVEMAINTENANCEINACTIVE
isOnlineboolean
Whether this is a virtual/online room rather than a physical space. When `true`, `personCapacity` may be `0` and `onlineLink` can hold the meeting URL.
onlineLinkstring | null
Meeting or video link for online rooms (e.g. Zoom or Teams URL). Only relevant when `isOnline` is `true`.
max length 2000
courseIdsstring[]
Optional course IDs to link to the room. On update, replaces the full set of linked courses — omit courses you want to keep by including every desired ID. Courses must belong to your institution.
moduleIdsstring[]
Optional course module IDs to link to the room (`CourseModule.id`). Version IDs (`CourseModuleVersion.id`) are also accepted and resolved to the parent module. On update, replaces the full linked set. Modules must belong to your institution.
scheduledStatusChangeobject
Optional scheduled availability change to create in the same request. Use for future or temporary status windows (e.g. maintenance from Monday–Friday). Omit `endDate` or pass `null` for an indefinite change. Returns `409` when the window overlaps an existing schedule.
Show properties
statusstringrequired
Room availability status in the dashboard. Defaults to `ACTIVE` on create; use `MAINTENANCE` or `INACTIVE` to hide or restrict booking. For `scheduledStatusChange`, this is the status applied during the scheduled window.
Allowed:ACTIVEMAINTENANCEINACTIVE
startDatestring<date-time>required
When the scheduled status takes effect. Compared at minute precision in the dashboard.
endDatestring<date-time> | null
When the scheduled status ends and the room reverts to its base status. Omit or `null` for no end date (indefinite). Must be after `startDate`.
reasonstring
Optional note explaining the change (e.g. `Annual HVAC maintenance`).
max length 1000
Responses
200Updated room
dataRoomDetailrequired
Full room returned by GET /rooms/{id}, POST /rooms, and PATCH /rooms/{id}. Includes location, equipmentAndAmenities, courses, modules, and scheduledChanges (sorted by most recent startDate first).
Show properties
idstringrequired
namestringrequired
institutionIdstringrequired
personCapacityintegerrequired
addressNotesstringrequired
Additional address notes. Empty string when not set.
codestring | null
locationIdstring | null
statusstringrequired
Allowed:ACTIVEMAINTENANCEINACTIVE
isOnlinebooleanrequired
onlineLinkstring | null
locationLocationSummary | any
Show properties
One of:
LocationSummary
idstringrequired
namestringrequired
Display name for the location — the label shown in the dashboard when managing rooms and assigning them to a site (e.g. `Main Campus`, `North Building`, `Sleeping Pod Area`).
max length 100
addressstringrequired
Physical street or postal address of the location. Used in the dashboard for map display and geocoding — provide a real-world address, not the location name repeated (e.g. `123 University Ave, 10115 Berlin`).
max length 500
institutionIdstringrequired
any
any
equipmentAndAmenitiesAmenity[]required
Structured equipment and amenities linked to the room.
Show properties
Array of Amenity
idstringrequired
institutionIdstringrequired
namestringrequired
createdAtstring<date-time>required
updatedAtstring<date-time>required
colorstring | null
iconstring | null
coursesobject[]required
Show properties
Array of object
idstringrequired
roomIdstringrequired
courseIdstringrequired
courseobjectrequired
Show properties
idstringrequired
namestringrequired
codestring | null
colorinteger | null
iconstring | null
iconTypestring | null
layer_idstringrequired
modulesobject[]required
Show properties
Array of object
idstringrequired
roomIdstringrequired
moduleIdstringrequired
moduleobjectrequired
Show properties
idstringrequired
namestringrequired
codestring | null
scheduledChangesRoomScheduledChange[]required
All scheduled status windows for this room (past, active, and future), sorted by most recent startDate first.
Show properties
Array of RoomScheduledChange
idstringrequired
roomIdstringrequired
statusstringrequired
Allowed:ACTIVEMAINTENANCEINACTIVE
startDatestring<date-time>required
endDatestring<date-time> | null
reasonstring | null
createdAtstring<date-time>required
createdByobject | anyrequired
Show properties
One of:
object
idstringrequired
namestringrequired
any
any
metaResponseMetarequired
Show properties
requestIdstringrequired
timestampstring<date-time>required
versionstringrequired
Allowed:v4
400Bad Request
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
401Unauthorized
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
404Not Found
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
409Conflict
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
422Unprocessable Entity — validation or business rule error
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
429Too Many Requests
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
500Internal Server Error
typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
Request
curl -X PATCH "https://fuxam.app/api/v4/rooms/string" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Lecture Hall A",
  "personCapacity": 120,
  "code": "LHA",
  "addressNotes": "",
  "amenityIds": [
    "string"
  ],
  "locationId": "loc_001",
  "status": "ACTIVE",
  "isOnline": false,
  "onlineLink": null,
  "courseIds": [
    "string"
  ],
  "moduleIds": [
    "string"
  ],
  "scheduledStatusChange": {
    "status": "ACTIVE",
    "startDate": "2026-07-01T00:00:00.000Z",
    "endDate": "2026-07-05T23:59:00.000Z",
    "reason": "Annual HVAC maintenance"
  }
}'
Response
{
  "data": {
    "id": "room_001",
    "name": "Lecture Hall A",
    "institutionId": "inst_123",
    "personCapacity": 120,
    "addressNotes": "",
    "code": "LHA",
    "locationId": "loc_001",
    "status": "ACTIVE",
    "isOnline": false,
    "onlineLink": null,
    "equipmentAndAmenities": [
      {
        "id": "amen_001",
        "institutionId": "inst_123",
        "name": "Projector",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "updatedAt": "2026-06-01T00:00:00.000Z",
        "color": "#0361fc",
        "icon": "projector"
      }
    ],
    "location": {
      "id": "loc_001",
      "name": "Main Campus",
      "address": "123 University Ave",
      "institutionId": "inst_123"
    },
    "courses": [
      {
        "id": "rc_001",
        "roomId": "room_001",
        "courseId": "course_001",
        "course": {
          "id": "course_001",
          "name": "Introduction to CS",
          "code": "CS101",
          "color": 5,
          "icon": "/illustrations/course-icon-library/book-worm.webp",
          "iconType": "image",
          "layer_id": "layer_001"
        }
      }
    ],
    "modules": [
      {
        "id": "rm_001",
        "roomId": "room_001",
        "moduleId": "cm_xyz789",
        "module": {
          "id": "cm_xyz789",
          "name": "Economics",
          "code": "ECO-101"
        }
      }
    ],
    "scheduledChanges": [
      {
        "id": "rss_001",
        "roomId": "room_001",
        "status": "MAINTENANCE",
        "startDate": "2026-07-01T00:00:00.000Z",
        "endDate": "2026-07-05T23:59:00.000Z",
        "reason": "Annual HVAC maintenance",
        "createdAt": "2026-06-15T10:00:00.000Z",
        "createdBy": {
          "id": "user_001",
          "name": "Jane Doe"
        }
      }
    ]
  },
  "meta": {
    "requestId": "req_1234567890_abc",
    "timestamp": "2026-06-02T07:00:00.000Z",
    "version": "v4"
  }
}