Siemens Building Operations API

The Siemens Building Operations API is a powerful tool that allows developers to integrate and customize building automation systems. This API enables communication between different building management systems and third-party software applications, giving users greater control and flexibility in managing their properties. With the Siemens Building Operations API, developers can create custom dashboards, automate routine tasks, and optimize energy usage for increased efficiency and cost savings.

OpenAPI Specification

siemens-building-operations-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Siemens Building Operations API
  description: >-
    The Siemens Building Operations API is part of the Building X openness
    platform that enables integration with Siemens building automation systems.
    The API provides access to building operational data including HVAC systems,
    lighting, energy management, and building equipment monitoring. It enables
    facility managers and building operations teams to read sensor data, control
    building systems, receive alerts, and integrate with third-party applications
    for smart building use cases.
  version: '1.0'
  contact:
    name: Siemens Building X Developer Support
    url: https://developer.siemens.com/building-x-openness/api/building-operations/overview.html
  termsOfService: https://www.siemens.com/global/en/general/legal-notices.html
externalDocs:
  description: Siemens Building Operations API Documentation
  url: https://developer.siemens.com/building-x-openness/api/building-operations/overview.html
servers:
  - url: https://buildingx.siemens.com/api/v1
    description: Siemens Building X Production API
tags:
  - name: Points
    description: >-
      Building data points representing individual sensor readings, setpoints,
      and actuator states within a building automation system.
  - name: Alarms
    description: >-
      Building alarm and alert management for monitoring critical equipment
      conditions and building system faults.
  - name: Trends
    description: >-
      Historical trend data for building system data points over specified
      time ranges.
  - name: Equipment
    description: >-
      Building equipment management including HVAC units, chillers, AHUs,
      and other mechanical systems.
  - name: Schedules
    description: >-
      Building automation schedules controlling when systems operate and
      at what setpoints.
security:
  - BearerAuth: []
paths:
  /points:
    get:
      operationId: listPoints
      summary: List Building Data Points
      description: >-
        Returns a paginated list of building data points visible to the
        authenticated application. Data points represent individual sensor
        readings, setpoints, and actuator states from building automation
        systems.
      tags:
        - Points
      parameters:
        - name: skip
          in: query
          schema:
            type: integer
            default: 0
          description: Number of records to skip for pagination
        - name: top
          in: query
          schema:
            type: integer
            default: 50
            maximum: 1000
          description: Maximum number of records to return
        - name: filter
          in: query
          schema:
            type: string
          description: OData filter expression for filtering points
      responses:
        '200':
          description: List of data points returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointList'
        '401':
          description: Unauthorized
        '403':
          description: Insufficient permissions

  /points/{pointId}:
    get:
      operationId: getPoint
      summary: Get Building Data Point
      description: >-
        Returns the details and current value of a specific building data
        point by its unique identifier.
      tags:
        - Points
      parameters:
        - $ref: '#/components/parameters/pointId'
      responses:
        '200':
          description: Data point details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Point'
        '401':
          description: Unauthorized
        '404':
          description: Point not found

  /points/{pointId}/value:
    get:
      operationId: getPointValue
      summary: Get Point Current Value
      description: >-
        Returns the current real-time value of a building data point.
      tags:
        - Points
      parameters:
        - $ref: '#/components/parameters/pointId'
      responses:
        '200':
          description: Current point value returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointValue'
        '401':
          description: Unauthorized
        '404':
          description: Point not found
    put:
      operationId: setPointValue
      summary: Set Point Value
      description: >-
        Sets the value of a writable building data point such as a setpoint
        or actuator command. Only points with write permissions can be modified.
      tags:
        - Points
      parameters:
        - $ref: '#/components/parameters/pointId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetPointValueRequest'
      responses:
        '200':
          description: Point value set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointValue'
        '400':
          description: Invalid value for point type
        '401':
          description: Unauthorized
        '403':
          description: Point is read-only or insufficient permissions
        '404':
          description: Point not found

  /points/{pointId}/trends:
    get:
      operationId: getPointTrend
      summary: Get Point Historical Trend Data
      description: >-
        Returns historical trend data for a building data point over a specified
        time range. Data is returned as timestamped value pairs.
      tags:
        - Trends
      parameters:
        - $ref: '#/components/parameters/pointId'
        - name: from
          in: query
          required: true
          schema:
            type: string
            format: date-time
          description: Start of time range (ISO 8601)
        - name: to
          in: query
          required: true
          schema:
            type: string
            format: date-time
          description: End of time range (ISO 8601)
        - name: resolution
          in: query
          schema:
            type: string
            enum:
              - raw
              - minute
              - hour
              - day
          description: Data resolution for aggregation
      responses:
        '200':
          description: Historical trend data returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrendData'
        '400':
          description: Invalid time range parameters
        '401':
          description: Unauthorized
        '404':
          description: Point not found

  /alarms:
    get:
      operationId: listAlarms
      summary: List Building Alarms
      description: >-
        Returns a list of active and historical building alarms. Alarms
        represent abnormal conditions in building systems requiring attention.
      tags:
        - Alarms
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum:
              - active
              - acknowledged
              - resolved
          description: Filter alarms by status
        - name: severity
          in: query
          schema:
            type: string
            enum:
              - critical
              - high
              - medium
              - low
          description: Filter alarms by severity level
        - name: from
          in: query
          schema:
            type: string
            format: date-time
          description: Return alarms from this timestamp
        - name: skip
          in: query
          schema:
            type: integer
            default: 0
        - name: top
          in: query
          schema:
            type: integer
            default: 50
      responses:
        '200':
          description: List of alarms returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlarmList'
        '401':
          description: Unauthorized

  /alarms/{alarmId}/acknowledge:
    post:
      operationId: acknowledgeAlarm
      summary: Acknowledge Building Alarm
      description: >-
        Acknowledges an active building alarm, indicating that the condition
        has been noted and is being addressed.
      tags:
        - Alarms
      parameters:
        - $ref: '#/components/parameters/alarmId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcknowledgeAlarmRequest'
      responses:
        '200':
          description: Alarm acknowledged successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Alarm'
        '401':
          description: Unauthorized
        '404':
          description: Alarm not found

  /equipment:
    get:
      operationId: listEquipment
      summary: List Building Equipment
      description: >-
        Returns a list of building equipment including HVAC units, air handling
        units, chillers, boilers, and other mechanical systems managed by the
        building automation system.
      tags:
        - Equipment
      parameters:
        - name: type
          in: query
          schema:
            type: string
          description: Filter by equipment type
        - name: skip
          in: query
          schema:
            type: integer
            default: 0
        - name: top
          in: query
          schema:
            type: integer
            default: 50
      responses:
        '200':
          description: List of equipment returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EquipmentList'
        '401':
          description: Unauthorized

  /equipment/{equipmentId}:
    get:
      operationId: getEquipment
      summary: Get Building Equipment
      description: >-
        Returns details of a specific piece of building equipment including
        its type, associated data points, and current operational status.
      tags:
        - Equipment
      parameters:
        - $ref: '#/components/parameters/equipmentId'
      responses:
        '200':
          description: Equipment details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Equipment'
        '401':
          description: Unauthorized
        '404':
          description: Equipment not found

  /schedules:
    get:
      operationId: listSchedules
      summary: List Building Schedules
      description: >-
        Returns a list of building automation schedules that control when
        systems operate and at what setpoints.
      tags:
        - Schedules
      parameters:
        - name: skip
          in: query
          schema:
            type: integer
            default: 0
        - name: top
          in: query
          schema:
            type: integer
            default: 50
      responses:
        '200':
          description: List of schedules returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleList'
        '401':
          description: Unauthorized

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth 2.0 Bearer token from Siemens Building X identity service

  parameters:
    pointId:
      name: pointId
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the building data point
    alarmId:
      name: alarmId
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the building alarm
    equipmentId:
      name: equipmentId
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the building equipment

  schemas:
    Point:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the data point
        name:
          type: string
          description: Human-readable name of the data point
        description:
          type: string
          description: Description of what the data point measures or controls
        type:
          type: string
          enum:
            - analog-input
            - analog-output
            - binary-input
            - binary-output
            - multistate-input
            - multistate-output
          description: BACnet point type classification
        unit:
          type: string
          description: Engineering unit (e.g., degC, Pa, m3/h)
        currentValue:
          $ref: '#/components/schemas/PointValue'
        writable:
          type: boolean
          description: Whether this point accepts write commands
        equipmentId:
          type: string
          description: ID of the equipment this point belongs to

    PointList:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Point'
        nextLink:
          type: string
          description: URL for the next page of results

    PointValue:
      type: object
      properties:
        value:
          description: Current value (type depends on point type)
          oneOf:
            - type: number
            - type: boolean
            - type: string
        timestamp:
          type: string
          format: date-time
          description: When this value was recorded
        quality:
          type: string
          enum:
            - good
            - bad
            - uncertain
          description: Data quality indicator

    SetPointValueRequest:
      type: object
      required:
        - value
      properties:
        value:
          description: New value to set
          oneOf:
            - type: number
            - type: boolean
            - type: string
        priority:
          type: integer
          minimum: 1
          maximum: 16
          description: BACnet priority level for the write command

    TrendData:
      type: object
      properties:
        pointId:
          type: string
        from:
          type: string
          format: date-time
        to:
          type: string
          format: date-time
        values:
          type: array
          items:
            $ref: '#/components/schemas/PointValue'

    Alarm:
      type: object
      properties:
        id:
          type: string
          description: Unique alarm identifier
        name:
          type: string
          description: Alarm name or description
        severity:
          type: string
          enum:
            - critical
            - high
            - medium
            - low
          description: Alarm severity level
        status:
          type: string
          enum:
            - active
            - acknowledged
            - resolved
          description: Current alarm status
        equipmentId:
          type: string
          description: Equipment associated with this alarm
        pointId:
          type: string
          description: Data point that triggered this alarm
        triggeredAt:
          type: string
          format: date-time
          description: When the alarm condition was first detected
        acknowledgedAt:
          type: string
          format: date-time
          description: When the alarm was acknowledged
        acknowledgedBy:
          type: string
          description: User who acknowledged the alarm

    AlarmList:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Alarm'
        nextLink:
          type: string

    AcknowledgeAlarmRequest:
      type: object
      properties:
        comment:
          type: string
          description: Optional comment about the acknowledgment action

    Equipment:
      type: object
      properties:
        id:
          type: string
          description: Unique equipment identifier
        name:
          type: string
          description: Equipment name
        type:
          type: string
          description: Equipment type (e.g., AHU, Chiller, Boiler)
        description:
          type: string
          description: Equipment description
        location:
          type: string
          description: Physical location within the building
        status:
          type: string
          enum:
            - operational
            - fault
            - maintenance
            - offline
          description: Current operational status

    EquipmentList:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Equipment'
        nextLink:
          type: string

    Schedule:
      type: object
      properties:
        id:
          type: string
          description: Unique schedule identifier
        name:
          type: string
          description: Schedule name
        type:
          type: string
          enum:
            - weekly
            - exception
            - calendar
          description: Schedule type
        effectiveFrom:
          type: string
          format: date-time
        effectiveTo:
          type: string
          format: date-time

    ScheduleList:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Schedule'
        nextLink:
          type: string