Steelcase Bookings API

Manage conference room reservations including creating, retrieving, updating, and cancelling bookings.

OpenAPI Specification

steelcase-bookings-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Steelcase RoomWizard Bookings 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/
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.
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'
  /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'
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.
    Error:
      type: object
      description: An error response.
      properties:
        error:
          type: string
          description: Error code.
        message:
          type: string
          description: Human-readable error message.
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
externalDocs:
  description: Steelcase Tech Support
  url: https://www.steelcase.com/techsupport/