Skip to content
Docs
English
Esc
↑↓navigate↵open⌘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}
Authorization
AuthorizationBasic auth · headerrequired

Basic Auth with clientId as username and clientSecret as password

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
200

Updated 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 | null
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
null
null
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 | nullrequired
Show properties
One of:
object
idstringrequired
namestringrequired
null
null
metaResponseMetarequired
Show properties
requestIdstringrequired
timestampstring<date-time>required
versionstringrequired
Allowed:v4
400

Bad 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
401

Unauthorized

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
404

Not 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
409

Conflict

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
422

Unprocessable 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
429

Too 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
500

Internal 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
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X PATCH 'https://fuxam.app/api/v4/rooms/string' \
  -H 'Authorization: Basic YOUR_CREDENTIALS' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Seminar Room 371",
  "personCapacity": 180,
  "locationId": "loc_001",
  "amenityIds": [
    "amen_001",
    "amen_002"
  ],
  "courseIds": [
    "course_001"
  ],
  "moduleIds": [
    "cm_xyz789"
  ],
  "status": "ACTIVE",
  "scheduledStatusChange": {
    "status": "MAINTENANCE",
    "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_abc123",
    "timestamp": "2026-06-26T00:00:00.000Z",
    "version": "v4"
  }
}