Steelcase RoomWizard API

The Steelcase RoomWizard API provides programmatic access to conference room scheduling and reservation management. Using HTTP GET and POST requests, developers can retrieve room bookings, create reservations, check room availability, and synchronize with enterprise calendaring systems including Microsoft Exchange, Office 365, and Google Calendar. The API returns XML-structured responses and supports webhook-style synchronization for keeping room status current.

OpenAPI Specification

steelcase-roomwizard-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Steelcase RoomWizard API
  description: >-
    The Steelcase RoomWizard API provides programmatic access to conference
    room scheduling and reservation management. Using HTTP GET and POST
    requests, developers can retrieve room bookings, create reservations,
    check room availability, and manage meeting information. The API supports
    integration with enterprise calendaring systems including Microsoft
    Exchange, Office 365, and Google Calendar via the RoomWizard connector.
    The API is hosted on the local network where the RoomWizard connector
    is installed.
  version: '1.0.0'
  contact:
    name: Steelcase Tech Support
    url: https://www.steelcase.com/techsupport/
  termsOfService: https://www.steelcase.com/
externalDocs:
  description: Steelcase Tech Support
  url: https://www.steelcase.com/techsupport/
servers:
  - url: https://{host}:{port}/api
    description: RoomWizard Connector Server (local network)
    variables:
      host:
        default: roomwizard.local
        description: Hostname or IP address of the RoomWizard connector server.
      port:
        default: '443'
        description: Port of the RoomWizard connector server.
tags:
  - name: Bookings
    description: >-
      Manage conference room reservations including creating, retrieving,
      updating, and cancelling bookings.
  - name: Rooms
    description: >-
      Retrieve room information including availability, capacity, and
      equipment details.
  - name: Status
    description: >-
      Monitor the connectivity and health status of RoomWizard devices
      and the connector service.
paths:
  /get_bookings:
    get:
      operationId: getBookings
      summary: Get Room Bookings
      description: >-
        Retrieves a list of bookings for a specific room or date range.
        Returns meeting details including subject, organizer, start time,
        end time, and attendee count.
      tags:
        - Bookings
      parameters:
        - name: room_id
          in: query
          required: false
          schema:
            type: string
          description: Filter bookings by room identifier.
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Start date for booking query (YYYY-MM-DD).
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: End date for booking query (YYYY-MM-DD).
        - name: include_cancelled
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: Whether to include cancelled bookings in the response.
      responses:
        '200':
          description: List of room bookings
          content:
            application/json:
              schema:
                type: object
                properties:
                  bookings:
                    type: array
                    items:
                      $ref: '#/components/schemas/Booking'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/ServerError'
  /get_availability:
    get:
      operationId: getRoomAvailability
      summary: Get Room Availability
      description: >-
        Retrieves the availability status of one or more rooms for a
        given time range, showing free/busy slots and current occupancy.
      tags:
        - Rooms
      parameters:
        - name: room_id
          in: query
          required: false
          schema:
            type: string
          description: Specific room ID to check. If omitted, returns all rooms.
        - name: start_time
          in: query
          required: true
          schema:
            type: string
            format: date-time
          description: Start of the availability window (ISO 8601 format).
        - name: end_time
          in: query
          required: true
          schema:
            type: string
            format: date-time
          description: End of the availability window (ISO 8601 format).
      responses:
        '200':
          description: Room availability data
          content:
            application/json:
              schema:
                type: object
                properties:
                  rooms:
                    type: array
                    items:
                      $ref: '#/components/schemas/RoomAvailability'
        '400':
          $ref: '#/components/responses/BadRequest'
  /create_booking:
    post:
      operationId: createBooking
      summary: Create a Booking
      description: >-
        Creates a new conference room booking for the specified room and
        time slot. The booking is synchronized with the connected
        calendaring system (Exchange, Office 365, or Google Calendar).
      tags:
        - Bookings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingCreate'
      responses:
        '201':
          description: Booking created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Booking'
        '400':
          $ref: '#/components/responses/BadRequest'
        '409':
          description: Room already booked for the requested time slot
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /cancel_booking:
    post:
      operationId: cancelBooking
      summary: Cancel a Booking
      description: >-
        Cancels an existing conference room booking. The cancellation is
        propagated to the connected calendaring system.
      tags:
        - Bookings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - booking_id
              properties:
                booking_id:
                  type: string
                  description: The unique identifier of the booking to cancel.
                reason:
                  type: string
                  description: Optional reason for cancellation.
      responses:
        '200':
          description: Booking cancelled successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /get_rooms:
    get:
      operationId: listRooms
      summary: List Rooms
      description: >-
        Returns a list of all conference rooms managed by the RoomWizard
        system including room names, capacity, equipment, and location.
      tags:
        - Rooms
      parameters:
        - name: building
          in: query
          required: false
          schema:
            type: string
          description: Filter rooms by building name or ID.
        - name: floor
          in: query
          required: false
          schema:
            type: string
          description: Filter rooms by floor.
        - name: min_capacity
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Minimum room capacity required.
      responses:
        '200':
          description: List of rooms
          content:
            application/json:
              schema:
                type: object
                properties:
                  rooms:
                    type: array
                    items:
                      $ref: '#/components/schemas/Room'
  /get_room:
    get:
      operationId: getRoom
      summary: Get Room Details
      description: >-
        Returns detailed information about a specific RoomWizard-managed
        conference room including current status, capacity, and amenities.
      tags:
        - Rooms
      parameters:
        - name: room_id
          in: query
          required: true
          schema:
            type: string
          description: The unique identifier of the room.
      responses:
        '200':
          description: Room details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Room'
        '404':
          $ref: '#/components/responses/NotFound'
  /status:
    get:
      operationId: getConnectorStatus
      summary: Get Connector Status
      description: >-
        Returns the health and connectivity status of the RoomWizard
        connector service and all registered devices.
      tags:
        - Status
      responses:
        '200':
          description: Connector status information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorStatus'
components:
  schemas:
    Booking:
      type: object
      description: A conference room booking.
      properties:
        booking_id:
          type: string
          description: Unique identifier for the booking.
        room_id:
          type: string
          description: ID of the booked room.
        room_name:
          type: string
          description: Name of the booked room.
        subject:
          type: string
          description: Meeting subject/title.
        organizer:
          type: string
          description: Meeting organizer name or email.
        start_time:
          type: string
          format: date-time
          description: Meeting start time (ISO 8601).
        end_time:
          type: string
          format: date-time
          description: Meeting end time (ISO 8601).
        attendee_count:
          type: integer
          description: Number of expected attendees.
        status:
          type: string
          enum:
            - confirmed
            - cancelled
            - in-progress
            - completed
          description: Current booking status.
        calendar_source:
          type: string
          enum:
            - exchange
            - office365
            - google
            - local
          description: The calendaring system this booking is synchronized with.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the booking was created.
    BookingCreate:
      type: object
      required:
        - room_id
        - subject
        - start_time
        - end_time
      description: Request body for creating a new booking.
      properties:
        room_id:
          type: string
          description: ID of the room to book.
        subject:
          type: string
          description: Meeting subject/title.
        organizer:
          type: string
          description: Meeting organizer name or email.
        start_time:
          type: string
          format: date-time
          description: Meeting start time (ISO 8601).
        end_time:
          type: string
          format: date-time
          description: Meeting end time (ISO 8601).
        attendee_count:
          type: integer
          minimum: 1
          description: Number of expected attendees.
        notes:
          type: string
          description: Optional meeting notes.
    Room:
      type: object
      description: A conference room managed by RoomWizard.
      properties:
        room_id:
          type: string
          description: Unique identifier for the room.
        name:
          type: string
          description: Room name.
        building:
          type: string
          description: Building where the room is located.
        floor:
          type: string
          description: Floor where the room is located.
        capacity:
          type: integer
          description: Maximum room capacity.
        is_available:
          type: boolean
          description: Whether the room is currently available.
        equipment:
          type: array
          items:
            type: string
          description: List of available equipment (e.g., projector, whiteboard, video conferencing).
        email_address:
          type: string
          format: email
          description: Room calendar email address for direct calendar invites.
    RoomAvailability:
      type: object
      description: Availability information for a room during a time window.
      properties:
        room_id:
          type: string
          description: Room identifier.
        room_name:
          type: string
          description: Room name.
        is_available_now:
          type: boolean
          description: Whether the room is currently available.
        next_available:
          type: string
          format: date-time
          description: Next available time slot start.
        busy_slots:
          type: array
          items:
            type: object
            properties:
              start_time:
                type: string
                format: date-time
              end_time:
                type: string
                format: date-time
          description: List of busy time slots within the queried window.
    ConnectorStatus:
      type: object
      description: Health status of the RoomWizard connector.
      properties:
        status:
          type: string
          enum:
            - healthy
            - degraded
            - offline
          description: Overall connector health status.
        calendar_connected:
          type: boolean
          description: Whether the connector is connected to the calendaring system.
        calendar_type:
          type: string
          description: Type of calendar system connected (exchange, office365, google).
        device_count:
          type: integer
          description: Number of RoomWizard devices registered.
        devices_online:
          type: integer
          description: Number of devices currently online.
        last_sync:
          type: string
          format: date-time
          description: Timestamp of the last successful calendar synchronization.
    Error:
      type: object
      description: An error response.
      properties:
        error:
          type: string
          description: Error code.
        message:
          type: string
          description: Human-readable error message.
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'