openapi: 3.0.0
info:
  version: v15.00.01
  title: K 40 RF Local API
  description: |-

    The K 40 RF is an internet gateway for controlling and monitoring your heating system or ventilation unit remotely.
    You can use the K 40 RF Local API to read data from your heating system over your local network.
    For now, the API provides read-only access and the resources available depend on your connected appliance and system configuration.

    © Bosch Thermotechnik GmbH 2026

    [Imprint](https://www.bosch-homecomfort.com/en/imprint/?prevent-auto-open-privacy-settings=1)
  contact:
    name: Bosch Home Comfort Group API Documentation
    url: https://github.com/bosch-home-comfort/api-docs
  license:
    name: Apache License 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://{gatewayAddress}:9443
    description: Local gateway API endpoint.
    variables:
      gatewayAddress:
        default: gateway.local
        description: Gateway hostname or IP address discovered through the router or mDNS.
security:
  - bearerAuth: []
tags:
  - name: devices
    description: Wireless devices paired with the gateway and their current data.
  - name: dhw circuits
    description: Domestic hot water circuits and their current operating data.
  - name: gateway
    description: Gateway identity, network interfaces, software, and update data.
  - name: heating circuits
    description: Space-heating circuits and their current operating data.
  - name: heat sources
    description: Heat generators, refrigerant circuits, and energy-monitoring data.
  - name: notifications
    description: Current system notifications and error messages.
  - name: pool
    description: Pool-heating measurements and operating data.
  - name: recordings
    description: Historical measurements exposed through the supported recording request form.
  - name: solar circuits
    description: Solar thermal circuit measurements.
  - name: signals
    description: Discoverable appliance signals and their current values.
  - name: system
    description: Installed-system identity and module information.
  - name: ventilation
    description: Ventilation measurements and operating data.
  - name: zones
    description: Heating zones and their assignments, settings, and current data.
paths:
  /devices/inclusionTime:
    get:
      operationId: getDevicesInclusionTime
      description: Get the inclusion timeout.
      tags:
        - devices
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /devices/inclusionTime
                type: floatValue
                writeable: 1
                value: 180
                unitOfMeasure: s
                minValue: 0
                maxValue: 1800
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/inclusionWhitelist:
    get:
      operationId: getDevicesInclusionWhitelist
      description: Get the inclusion whitelist.
      tags:
        - devices
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/InclusionWhitelist'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/inclusionWhitelist
                type: inclusionWhitelist
                writeable: 0
                value:
                  - assignedHC: hc1
                    actualDevices: 0
                    maxSupportedDevices: 16
                    sgtinPattern:
                      - type: ETRV
                        pattern: 3014F711A0000480
                      - type: ETRV
                        pattern: 3014F711A0000040
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/rhc/assignedTo:
    get:
      operationId: getDevicesRhcAssignedTo
      description: Get the RHC assignment.
      tags:
        - devices
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringValue'
              example:
                id: /devices/rhc/assignedTo
                writeable: 1
                type: stringValue
                value: hc1
                allowedValues:
                  - unassigned
                  - hc1
                  - hc2
                  - hc3
                  - hc4
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/uhc/assignedTo:
    get:
      operationId: getDevicesUhcAssignedTo
      description: Get the UHC assignment.
      tags:
        - devices
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringValue'
              example:
                id: /devices/uhc/assignedTo
                writeable: 1
                type: stringValue
                value: hc1
                allowedValues:
                  - unassigned
                  - hc1
                  - hc2
                  - hc3
                  - hc4
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/brand:
    get:
      operationId: getGatewayBrand
      description: Get the brand of the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/brand
                writeable: 0
                type: stringValue
                value: Buderus
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/dataProcessing/status:
    get:
      operationId: getGatewayDataProcessingStatus
      description: Get the data processing status of the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        type: string
                        enum:
                          - in_progress
                          - completed
              example:
                id: /gateway/dataProcessing/status
                writeable: 0
                type: stringValue
                value: in_progress
                allowedValues:
                  - in_progress
                  - completed
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/eth/ip/ipv4:
    get:
      operationId: getGatewayEthernetIpV4
      description: Get the IPv4 address of the gateway Ethernet interface.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/eth/ip/ipv4
                type: stringValue
                writeable: 0
                value: 192.0.2.10
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/eth/mac:
    get:
      operationId: getGatewayEthMac
      description: Get the MAC address of the gateway's Ethernet interface.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                example:
                  id: /gateway/eth/mac
                  type: stringValue
                  writeable: 0
                  value: 48:F1:7F:59:E3:36
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/tzInfo/timeZone:
    get:
      operationId: getGatewayTzInfoTimeZone
      description: Get the current time zone information of the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimezoneStringValue'
              example:
                id: /gateway/tzInfo/timeZone
                type: stringValue
                writeable: 1
                value: Europe/Berlin
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/update/status:
    get:
      operationId: getGatewayUpdateStatus
      description: Get the status of the gateway update (steps, progress and metadata). cur_stepName and cur_stepType are always empty.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - allOf:
                      - $ref: '#/components/schemas/BaseResource'
                      - $ref: '#/components/schemas/UpdateStatus'
                  - allOf:
                      - $ref: '#/components/schemas/BaseResource'
                      - $ref: '#/components/schemas/UpdateStatusStringValue'
              example:
                id: /gateway/update/status
                type: updateStatus
                writeable: 0
                value:
                  recipeId: ZiGhCf73rVVS
                  updateId: '45625'
                  status:
                    value: success
                    allowedValues:
                      - idle
                      - start
                      - run
                      - download
                      - in_progress
                      - success
                      - failure
                      - done
                  progress:
                    nsteps: 2
                    cur_step: 1
                    cur_percent: 90
                    percent: 90
                    cur_stepName: ''
                    cur_stepType:
                      value: ''
                      allowedValues:
                        - ''
                        - start_update
                        - system_transfer
                        - install
                        - rollback
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/update/report:
    get:
      operationId: getGatewayUpdateReport
      description: Get the update report for the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BaseResource'
                  - $ref: '#/components/schemas/UpdateReport'
              example:
                id: /gateway/update/report
                type: updateReport
                writeable: 0
                timeStamp: '1708683200'
                recipeId: ZiGhCf73rVVS
                status: SUCCESS
                gatewayId: '102041838'
                values:
                  - moduleId: '102041838'
                    status: SUCCESS
                    timeStamp: '1721825354'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/versionFirmware:
    get:
      operationId: getGatewayVersionFirmware
      description: Get the firmware version of the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/versionFirmware
                type: stringValue
                writeable: 0
                value: 01.00.00
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/versionHardware:
    get:
      operationId: getGatewayVersionHardware
      description: Get the hardware version of the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/versionHardware
                type: stringValue
                writeable: 0
                value: K30RF_v1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/apList:
    get:
      operationId: getGatewayWifiApList
      description: Get the list of Wi-Fi access points for the gateway.
      tags:
        - gateway
      parameters:
        - description: Trigger a new scan
          in: query
          name: refresh
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApList'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/wifi/apList
                type: apList
                writeable: 0
                values:
                  - ssid: 5Lit6Iux5a2X5YW4
                    secType: WPA2
                    strength: '-57'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/hotspotRemainingTime:
    get:
      operationId: getGatewayWifiHotspotRemainingTime
      description: Get the remaining duration of the gateway's Wi-Fi hotspot session.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/wifi/hotspotRemainingTime
                writeable: 0
                type: floatValue
                value: 120
                unitOfMeasure: mins
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/ip/ipv4:
    get:
      operationId: getGatewayWifiIpV4
      description: Get the gateway IPv4 address of the Wi-Fi interface.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/wifi/ip/ipv4
                type: stringValue
                writeable: 0
                value: 192.0.2.10
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/mac:
    get:
      operationId: getGatewayWifiMac
      description: Get the MAC address of the Wi-Fi interface for the gateway.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                example:
                  id: /gateway/wifi/mac
                  type: stringValue
                  writeable: 0
                  value: 48:F1:7F:59:E3:36
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/pairingStatus:
    get:
      operationId: getGatewayWifiPairingStatus
      description: Get the Wi-Fi pairing status.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/WifiPairingStatus'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/wifi/pairingStatus
                type: stringValue
                writeable: 0
                value: false
                allowedValues:
                  - false
                  - hotspot
                  - wps
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /gateway/wifi/ssid:
    get:
      operationId: getGatewayWifiSsid
      description: Get gateway SSID of current Wi-Fi network.
      tags:
        - gateway
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApList'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /gateway/wifi/ssid
                type: apList
                writeable: 0
                values:
                  - ssid: 5Lit6Iux5a2X5YW4
                    secType: WPA2
                    strength: '-57'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/actualHeatDemand:
    get:
      operationId: getHeatSourcesActualHeatDemand
      description: Get the current heat demand served.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ArrayData'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/actualHeatDemand
                type: arrayData
                writeable: 0
                values:
                  - ch
                  - dhw
                allowedValues:
                  - ''
                  - ch
                  - dhw
                  - frost
                  - ch_heat
                  - ch_cool
                  - dhw_exclusive
                  - dhw_nonexclusive
                  - pool
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/actualModulation:
    get:
      operationId: getHeatSourcesActualModulation
      description: Get the actual modulation of the heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/actualModulation
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/actualSupplyTemperature:
    get:
      operationId: getHeatSourcesActualSupplyTemperature
      description: Get the system supply flow temperature.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/actualSupplyTemperature
                type: floatValue
                writeable: 0
                value: 24.4
                unitOfMeasure: C
                state:
                  - open: -32768
                    short: 32768
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/compressor/powerElecActual:
    get:
      operationId: getHeatSourcesCompressorPowerElecActual
      description: Get the compressor actual electrical power.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/compressor/powerElecActual
                type: floatValue
                writeable: 0
                value: 65
                unitOfMeasure: W
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/currentSupplySetpoint:
    get:
      operationId: getHeatSourcesCurrentSupplySetpoint
      description: Get the current supply temperature setpoint.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/currentSupplySetpoint
                type: floatValue
                writeable: 0
                value: 23
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/dhw/cylinderTemperature:
    get:
      operationId: getHeatSourcesDhwCylinderTemperature
      description: Get the domestic hot water cylinder temperature (middle/bottom).
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/dhw/cylinderTemperature
                type: floatValue
                writeable: 0
                value: 24.4
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32768
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/additionalHeater/flowTemp:
    get:
      operationId: getHeatSourcesAdditionalHeaterFlowTemp
      description: Get the electric heater flow temperature.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/additionalHeater/flowTemp
                type: floatValue
                writeable: 0
                value: 54.1
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32768
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/additionalHeater/primary/status:
    get:
      operationId: getHeatSourcesAdditionalHeaterPrimaryStatus
      description: Get the status of the additional heater in primary circuit.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/additionalHeater/primary/status
                type: stringValue
                writeable: 0
                value: 'off'
                allowedValues:
                  - 'off'
                  - on_requested
                  - alarm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/eHeater/powerElecActual:
    get:
      operationId: getHeatSourcesEHeaterPowerElecActual
      description: Get the actual power of the electrical heater.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/eHeater/powerElecActual
                type: floatValue
                writeable: 0
                value: 65
                unitOfMeasure: W
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/eHeater/powerElecActualLowResolution:
    get:
      operationId: getHeatSourcesEHeaterPowerElecActualLowResolution
      description: Get the actual power of the electrical heater in low resolution.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/eHeater/powerElecActualLowResolution
                type: floatValue
                writeable: 0
                value: 25
                unitOfMeasure: kW
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emon/chConsumption:
    get:
      operationId: getHeatSourcesEmonChConsumption
      description: Get the generated and consumed energy of different heat source components of central heating (CH).
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emon/chConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - eheater: 2
                  - compressor: 2
                  - burner: 2
                  - electricity: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emon/coolingConsumption:
    get:
      operationId: getHeatSourcesEmonCoolingConsumption
      description: Get the generated and consumed energy of different heat source components of cooling.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emon/coolingConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - compressor: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emon/dhwConsumption:
    get:
      operationId: getHeatSourcesEmonDhwConsumption
      description: Get the generated and consumed energy of heat-source components for domestic hot water (DHW).
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emon/dhwConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - eheater: 2
                  - compressor: 2
                  - burner: 2
                  - electricity: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emon/poolConsumption:
    get:
      operationId: getHeatSourcesEmonPoolConsumption
      description: Get the generated and consumed energy of different heat source components of the pool.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emon/poolConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - eheater: 2
                  - compressor: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emon/totalConsumption:
    get:
      operationId: getHeatSourcesEmonTotalConsumption
      description: Get the generated and consumed energy of different heat source components of total consumption.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emon/totalConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - eheater: 2
                  - compressor: 14
                  - solar: 27.9
                  - burner: 156.9
                  - electricity: 236.8
                  - ventilation: 72.436
                  - ventilationHeatRecovered: 15.314
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/emStatus:
    get:
      operationId: getHeatSourcesEmStatus
      description: Get the state of the energy manager mode.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/emStatus
                type: stringValue
                writeable: 0
                value: inactive
                allowedValues:
                  - notConnected
                  - inactive
                  - activeCh
                  - activeDHW
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/externalInputs/input1/state:
    get:
      operationId: getHeatSourcesExternalInputsInput1State
      description: Get the state of external input 1.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/externalInputs/input1/state
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/externalInputs/input2/state:
    get:
      operationId: getHeatSourcesExternalInputsInput2State
      description: Get the state of external input 2.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/externalInputs/input2/state
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/externalInputs/input3/state:
    get:
      operationId: getHeatSourcesExternalInputsInput3State
      description: Get the state of external input 3.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/externalInputs/input3/state
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/externalInputs/input4/state:
    get:
      operationId: getHeatSourcesExternalInputsInput4State
      description: Get the state of external input 4.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/externalInputs/input4/state
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/externalInputs/status/coolingBlock:
    get:
      operationId: getHeatSourcesExternalInputStatusCoolingBlock
      description: Get the status of the external input for the block cooling.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/externalInputs/status/coolingBlock
                type: stringValue
                writeable: 0
                value: 'yes'
                allowedValues:
                  - 'no'
                  - 'yes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/fallbackOperation/status:
    get:
      operationId: getHeatSourcesFallbackOperationStatus
      description: Indicates whether the system is operating in fallback mode.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/fallbackOperation/status
                type: stringValue
                writeable: 0
                value: normal
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/flameStatus:
    get:
      operationId: getHeatSourcesFlameStatus
      description: Indicates whether the burner is currently operating.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/flameStatus
                type: stringValue
                writeable: 0
                value: 'off'
                allowedValues:
                  - 'off'
                  - 'on'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/numberOfRefrigerantCircuitsOnline:
    get:
      operationId: getNumberOfRefrigerantCircuitsOnline
      description: Get the number of refrigerant circuits currently connected.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/numberOfRefrigerantCircuitsOnline
                type: integerValue
                writeable: 0
                value: 1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/hybrid/activeHeatSource:
    get:
      operationId: getHeatSourcesHybridActiveHeatSource
      description: Get the active heat source for hybrid systems.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hybrid/activeHeatSource
                type: stringValue
                writeable: 0
                value: heatpump_only
                allowedValues:
                  - none
                  - heatpump_only
                  - appliance_only
                  - both
                  - additionalHeater_only
                  - heatpump_and_additionalHeater
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/numberOfStarts:
    get:
      operationId: getHeatSourcesNumberOfStarts
      description: Get the total number of starts since installation of heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/numberOfStarts
                type: floatValue
                writeable: 0
                value: 139
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/pvContactState:
    get:
      operationId: getHeatSourcesPvContactState
      description: Get the state of the photovoltaic contact.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/pvContactState
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/returnTemperature:
    get:
      operationId: getHeatSourcesReturnTemperature
      description: Get the heat source return temperature.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/returnTemperature
                type: floatValue
                writeable: 0
                value: -3276.8
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/sensors/evaporatorTemp_tl1:
    get:
      operationId: getHeatSourcesSensorsEvaporatorTempTl1
      description: Get the air temperature from the additional sensor at the heat-pump collector.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/sensors/evaporatorTemp_tl1
                type: floatValue
                writeable: 0
                value: 43.5
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/sensors/evaporatorTemp_tl2:
    get:
      operationId: getHeatSourcesSensorsEvaporatorTempTl2
      description: Get the air temperature sensor value at the collector of heat pump.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/sensors/evaporatorTemp_tl2
                type: floatValue
                writeable: 0
                value: 43.5
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/smartFunction/active:
    get:
      operationId: getHeatSourcesSmartFunctionActive
      description: Get the status of the domestic hot water smart function active setting.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ReadableResource'
                  - $ref: '#/components/schemas/BinaryStringValue'
              example:
                id: /heatSources/smartFunction/active
                writeable: 0
                type: stringValue
                value: 'off'
                allowedValues:
                  - 'off'
                  - 'on'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/Source/eHeater/status:
    get:
      operationId: getHeatSourcesSourceEHeaterStatus
      description: Get the state of the electrical heater.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/Source/eHeater/status
                type: stringValue
                writeable: 0
                value: 'off'
                allowedValues:
                  - 'off'
                  - heating
                  - dhw
                  - pool
                  - pool_heat
                  - defrost
                  - alarm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/systemPressure:
    get:
      operationId: getHeatSourcesSystemPressure
      description: Get the heat source system pressure.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/systemPressure
                type: floatValue
                writeable: 0
                value: 0
                unitOfMeasure: bar
                state:
                  - invalid: 255
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/workingTime/totalSystem:
    get:
      operationId: getHeatSourcesWorkingTimeTotalSystem
      description: Get the heat source total working time.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/workingTime/totalSystem
                type: floatValue
                writeable: 0
                value: 80064
                unitOfMeasure: s
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/dhw/cylinderUpperTemp:
    get:
      operationId: getHeatSourcesDhwCylinderUpperTemp
      description: Get the upper temperature of the domestic hot water cylinder.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/dhw/cylinderUpperTemp
                type: floatValue
                writeable: 0
                value: 55
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /notifications:
    get:
      operationId: getNotifications
      description: Get the error messages.
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ErrorList'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /notifications
                type: errorList
                writeable: 0
                values:
                  - dcd: 4U
                    ccd: 521
                    orig: '8'
                    dlv: '8'
                    fc: '4'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /pool/currentTemp:
    get:
      operationId: getPoolCurrentTemp
      description: Get the measured pool temperature.
      tags:
        - pool
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /pool/currentTemp
                type: floatValue
                writeable: 0
                value: 30
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /recordings/heatSources/actualSupplyTemperature:
    get:
      operationId: getRecordingsHeatSourcesActualSupplyTemperature
      description: |-
        Returns recording data for actual supply temperature of heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/actualSupplyTemperature?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: C
                    recordedResource:
                      id: /heatSources/actualSupplyTemperature
                      uri: http://192.0.2.10/heatSources/actualSupplyTemperature
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 55.3
                            c: 1
                          - 'y': 56.1
                            c: 1
                          - 'y': 54.8
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 55
                            c: 24
                          - 'y': 55.5
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 55.1
                            c: 500
                          - 'y': 55.3
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/burner:
    get:
      operationId: getRecordingsHeatSourcesEmonChBurner
      description: |-
        Returns recording data for central heating burner energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/burner?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ch/burner
                      uri: http://192.0.2.10/heatSources/emon/ch/burner
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.15
                            c: 1
                          - 'y': 4.22
                            c: 1
                          - 'y': 3.87
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 85.6
                            c: 24
                          - 'y': 92.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2250.8
                            c: 500
                          - 'y': 2340.2
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/compressor:
    get:
      operationId: getRecordingsHeatSourcesEmonChCompressor
      description: |-
        Returns recording data for central heating compressor energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ch/compressor
                      uri: http://192.0.2.10/heatSources/emon/ch/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 1.85
                            c: 1
                          - 'y': 2.12
                            c: 1
                          - 'y': 1.97
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 48.5
                            c: 24
                          - 'y': 52.3
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1420.8
                            c: 500
                          - 'y': 1485.2
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/eheater:
    get:
      operationId: getRecordingsHeatSourcesEmonChEHeater
      description: |-
        Returns recording data for central heating electric heater energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/eheater?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ch/eheater
                      uri: http://192.0.2.10/heatSources/emon/ch/eheater
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 2.35
                            c: 1
                          - 'y': 2.78
                            c: 1
                          - 'y': 2.56
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 58.4
                            c: 24
                          - 'y': 64.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1695.8
                            c: 500
                          - 'y': 1782.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/electricity:
    get:
      operationId: getRecordingsHeatSourcesEmonChElectricity
      description: |-
        Returns recording data for central heating electricity consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/electricity?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ch/electricity
                      uri: http://192.0.2.10/heatSources/emon/ch/electricity
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 5.85
                            c: 1
                          - 'y': 6.42
                            c: 1
                          - 'y': 6.18
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 144.8
                            c: 24
                          - 'y': 158.5
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 4234.5
                            c: 500
                          - 'y': 4621.2
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesEmonChNumberOfStarts
      description: |-
        Returns recording data for ch NumberOfStarts from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/emon/ch/numberOfStarts
                      uri: http://192.0.2.10/heatSources/emon/ch/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesEmonChOutputProduced
      description: |-
        Returns recording data for central heating heat output produced from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ch/outputProduced
                      uri: http://192.0.2.10/heatSources/emon/ch/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 12.85
                            c: 1
                          - 'y': 14.12
                            c: 1
                          - 'y': 13.47
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 317.4
                            c: 24
                          - 'y': 348.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 9278.5
                            c: 500
                          - 'y': 10184.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ch/workingTime:
    get:
      operationId: getRecordingsHeatSourcesEmonChWorkingTime
      description: |-
        Returns recording data for ch workingtime from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ch/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/emon/ch/workingTime
                      uri: http://192.0.2.10/heatSources/emon/ch/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/cooling/compressor:
    get:
      operationId: getRecordingsHeatSourcesEmonCoolingCompressor
      description: |-
        Returns recording data for cooling compressor energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/cooling/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/cooling/compressor
                      uri: http://192.0.2.10/heatSources/emon/cooling/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.45
                            c: 1
                          - 'y': 3.78
                            c: 1
                          - 'y': 3.62
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 85.2
                            c: 24
                          - 'y': 93.5
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2492.8
                            c: 500
                          - 'y': 2736.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/cooling/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesEmonCoolingNumberOfStarts
      description: |-
        Returns recording data for cooling NumberOfStarts from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/cooling/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/emon/cooling/numberOfStarts
                      uri: http://192.0.2.10/heatSources/emon/cooling/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/cooling/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesEmonCoolingOutputProduced
      description: |-
        Returns recording data for cooling output produced from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/cooling/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/cooling/outputProduced
                      uri: http://192.0.2.10/heatSources/emon/cooling/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/cooling/workingTime:
    get:
      operationId: getRecordingsHeatSourcesEmonCoolingWorkingTime
      description: |-
        Returns recording data for cooling  workingtime from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/cooling/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/emon/cooling/workingTime
                      uri: http://192.0.2.10/heatSources/emon/cooling/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/burner:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwBurner
      description: |-
        Returns recording data for DHW burner energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/burner?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/dhw/burner
                      uri: http://192.0.2.10/heatSources/emon/dhw/burner
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 2.45
                            c: 1
                          - 'y': 3.12
                            c: 1
                          - 'y': 2.87
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 65.2
                            c: 24
                          - 'y': 72.8
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1850.5
                            c: 500
                          - 'y': 1920.3
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/compressor:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwCompressor
      description: |-
        Returns recording data for domestic hot water compressor energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/dhw/compressor
                      uri: http://192.0.2.10/heatSources/emon/dhw/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 1.85
                            c: 1
                          - 'y': 2.12
                            c: 1
                          - 'y': 1.97
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 45.6
                            c: 24
                          - 'y': 52.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1334.8
                            c: 500
                          - 'y': 1487.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/eheater:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwEHeater
      description: |-
        Returns recording data for DHW electric heater energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/eheater?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/dhw/eheater
                      uri: http://192.0.2.10/heatSources/emon/dhw/eheater
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 1.25
                            c: 1
                          - 'y': 1.68
                            c: 1
                          - 'y': 1.42
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 32.8
                            c: 24
                          - 'y': 38.5
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 945.6
                            c: 500
                          - 'y': 1022.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/electricity:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwElectricity
      description: |-
        Returns recording data for domestic hot water electricity consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/electricity?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/dhw/electricity
                      uri: http://192.0.2.10/heatSources/emon/dhw/electricity
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.85
                            c: 1
                          - 'y': 4.12
                            c: 1
                          - 'y': 3.96
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 94.8
                            c: 24
                          - 'y': 102.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2768.5
                            c: 500
                          - 'y': 2895.2
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwNumberOfStarts
      description: |-
        Returns recording data for dhw NumberOfStarts from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/emon/dhw/numberOfStarts
                      uri: http://192.0.2.10/heatSources/emon/dhw/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwOutputProduced
      description: |-
        Returns recording data for DHW output energy produced from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/dhw/outputProduced
                      uri: http://192.0.2.10/heatSources/emon/dhw/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.85
                            c: 1
                          - 'y': 4.12
                            c: 1
                          - 'y': 3.97
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 95.4
                            c: 24
                          - 'y': 102.8
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2845.6
                            c: 500
                          - 'y': 2932.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/dhw/workingTime:
    get:
      operationId: getRecordingsHeatSourcesEmonDhwWorkingTime
      description: |-
        Returns recording data for dhw workingtime from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/dhw/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/emon/dhw/workingTime
                      uri: http://192.0.2.10/heatSources/emon/dhw/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/pool/compressor:
    get:
      operationId: getRecordingsHeatSourcesEmonPoolCompressor
      description: |-
        Returns recording data for pool compressor energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/pool/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/pool/compressor
                      uri: http://192.0.2.10/heatSources/emon/pool/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 2.15
                            c: 1
                          - 'y': 2.48
                            c: 1
                          - 'y': 2.32
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 53.2
                            c: 24
                          - 'y': 61.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1557.8
                            c: 500
                          - 'y': 1796.5
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/pool/eheater:
    get:
      operationId: getRecordingsHeatSourcesEmonPoolEHeater
      description: |-
        Returns recording data for pool electric heater energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/pool/eheater?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/pool/eheater
                      uri: http://192.0.2.10/heatSources/emon/pool/eheater
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 4.35
                            c: 1
                          - 'y': 4.78
                            c: 1
                          - 'y': 4.56
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 107.4
                            c: 24
                          - 'y': 118.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 3142.8
                            c: 500
                          - 'y': 3456.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/pool/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesEmonPoolNumberOfStarts
      description: |-
        Returns recording data for Pool NumberOfStarts from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/pool/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/emon/pool/numberOfStarts
                      uri: http://192.0.2.10/heatSources/emon/pool/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/pool/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesEmonPoolOutputProduced
      description: |-
        Returns recording data for pool heat output produced from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/pool/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/pool/outputProduced
                      uri: http://192.0.2.10/heatSources/emon/pool/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 8.45
                            c: 1
                          - 'y': 9.12
                            c: 1
                          - 'y': 8.87
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 208.5
                            c: 24
                          - 'y': 225.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6095.8
                            c: 500
                          - 'y': 6387.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/pool/workingTime:
    get:
      operationId: getRecordingsHeatSourcesEmonPoolWorkingTime
      description: |-
        Returns recording data for pool workingtime from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/pool/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/emon/pool/workingTime
                      uri: http://192.0.2.10/heatSources/emon/pool/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/burner:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalBurner
      description: |-
        Returns recording data for total burner energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/burner?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/burner
                      uri: http://192.0.2.10/heatSources/emon/total/burner
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 18.75
                            c: 1
                          - 'y': 20.45
                            c: 1
                          - 'y': 19.62
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 462.8
                            c: 24
                          - 'y': 505.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 13538.5
                            c: 500
                          - 'y': 14784.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/compressor:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalCompressor
      description: |-
        Returns recording data for total compressor energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/compressor
                      uri: http://192.0.2.10/heatSources/emon/total/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.85
                            c: 1
                          - 'y': 10.45
                            c: 1
                          - 'y': 10.18
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 243.2
                            c: 24
                          - 'y': 258.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 7118.5
                            c: 500
                          - 'y': 7568.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/eheater:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalEHeater
      description: |-
        Returns recording data for total electric heater energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/eheater?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/eheater
                      uri: http://192.0.2.10/heatSources/emon/total/eheater
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 6.25
                            c: 1
                          - 'y': 6.78
                            c: 1
                          - 'y': 6.53
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 154.2
                            c: 24
                          - 'y': 167.8
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 4508.5
                            c: 500
                          - 'y': 4889.2
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/electricity:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalElectricity
      description: |-
        Returns recording data for total electricity consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/electricity?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/electricity
                      uri: http://192.0.2.10/heatSources/emon/total/electricity
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 12.45
                            c: 1
                          - 'y': 13.78
                            c: 1
                          - 'y': 12.96
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 307.2
                            c: 24
                          - 'y': 340.5
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 8986.5
                            c: 500
                          - 'y': 9647.8
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalNumberOfStarts
      description: |-
        Returns recording data for total NumberOfStarts from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/emon/total/numberOfStarts
                      uri: http://192.0.2.10/heatSources/emon/total/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalOutputProduced
      description: |-
        Returns recording data for total heat output produced from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/outputProduced
                      uri: http://192.0.2.10/heatSources/emon/total/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 15.75
                            c: 1
                          - 'y': 16.84
                            c: 1
                          - 'y': 16.23
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 388.5
                            c: 24
                          - 'y': 416.8
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 11359.2
                            c: 500
                          - 'y': 12187.5
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/workingTime:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalWorkingTime
      description: |-
        Returns recording data for total workingtime from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/emon/total/workingTime
                      uri: http://192.0.2.10/heatSources/emon/total/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/solar:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalSolar
      description: |-
        Returns recording data for total solar energy contribution from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/solar?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/solar
                      uri: http://192.0.2.10/heatSources/emon/total/solar
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 6.25
                            c: 1
                          - 'y': 7.18
                            c: 1
                          - 'y': 6.84
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 154.8
                            c: 24
                          - 'y': 177.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 4529.4
                            c: 500
                          - 'y': 5193.8
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/total/ventilation:
    get:
      operationId: getRecordingsHeatSourcesEmonTotalVentilation
      description: |-
        Returns recording data for total ventilation energy consumption from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/total/ventilation?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/total/ventilation
                      uri: http://192.0.2.10/heatSources/emon/total/ventilation
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 0.75
                            c: 1
                          - 'y': 0.82
                            c: 1
                          - 'y': 0.78
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 18.5
                            c: 24
                          - 'y': 20.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 541.8
                            c: 500
                          - 'y': 587.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/emon/ventilation/heatRecovered:
    get:
      operationId: getRecordingsHeatSourcesEmonVentilationHeatRecovered
      description: |-
        Returns recording data for heat recovered from ventilation system from heat sources.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/emon/ventilation/heatRecovered?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/emon/ventilation/heatRecovered
                      uri: http://192.0.2.10/heatSources/emon/ventilation/heatRecovered
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.25
                            c: 1
                          - 'y': 3.68
                            c: 1
                          - 'y': 3.47
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 80.4
                            c: 24
                          - 'y': 91.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2351.8
                            c: 500
                          - 'y': 2658.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/system/sensors/temperatures/outdoor_t1:
    get:
      operationId: getRecordingsSystemSensorsTemperaturesOutdoorT1
      description: |-
        Returns recording data for outdoor temperature sensor T1.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/system/sensors/temperatures/outdoor_t1?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: C
                    recordedResource:
                      id: /system/sensors/temperatures/outdoor_t1
                      uri: http://192.0.2.10/system/sensors/temperatures/outdoor_t1
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 12.5
                            c: 1
                          - 'y': 13.2
                            c: 1
                          - 'y': 11.8
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 12
                            c: 24
                          - 'y': 12.8
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 12.3
                            c: 500
                          - 'y': 12.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /signals:
    get:
      operationId: getSignals
      description: Get the list of available signals.
      tags:
        - signals
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/RefEnum'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /signals
                type: refEnum
                writeable: 0
                references:
                  - id: /signals/SRC.RelativeTime
                    uri: http://192.0.2.10/signals/SRC.RelativeTime
                  - id: /signals/SRC.RuntimeAfterConversion
                    uri: http://192.0.2.10/signals/SRC.RuntimeAfterConversion
                  - id: /signals/SC.IntRoomTemp
                    uri: http://192.0.2.10/signals/SC.IntRoomTemp
                  - id: /signals/HC1ROOMREMOTESECOND.IntRoomTemp
                    uri: http://192.0.2.10/signals/HC1ROOMREMOTESECOND.IntRoomTemp
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /signals/{signalId}:
    get:
      operationId: getSignal
      description: Get a signal by its ID. Available signal IDs are discovered dynamically through GET /signals and depend on the connected system.
      tags:
        - signals
      parameters:
        - $ref: '#/components/parameters/SignalIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/StringValue'
              example:
                id: /signals/SC.HC1.FlowTempSetp
                type: integerValue
                writeable: 0
                value: 25
                unitOfMeasure: C
                state:
                  - OFF_COOL: 90
                  - OFF_HEAT: 0
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/basicInfo:
    get:
      operationId: getBasicSystemInfo
      description: Get the basic system information.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SystemBasicInfo'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/basicInfo
                type: systeminfo
                writeable: 0
                status: completed
                timeStamp: '1684201667'
                gatewayId: '101012902'
                values:
                  - Tok: '8'
                    Id: '8'
                    Ver: 23.06.02-5.33-d510f849
                    ProductName: Compress CS6800iAW 12 E
                    ModuleSerialNumber: 5.703731019068751e+21
                    ProductSerialNumber: '83703740000878738215205'
                    ModuleHwIdentStr: XCU_THH
                  - Tok: '8'
                    Id: '65281'
                    Ver: 3.06.02-5.33-d510f849
                    ProductName: AW 4 OR-S
                    ModuleSerialNumber: 5.703731009168751e+21
                    ProductSerialNumber: '83703740000968738215209'
                    ModuleHwIdentStr: XCU_SRH
                  - Tok: '72'
                    Id: '17'
                    Ver: 10.02.00
                    ModuleSerialNumber: '25302791000098738806125'
                    ModuleHwIdentStr: K40RF
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/bus:
    get:
      operationId: getSystemBus
      description: Get the current system bus configuration.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/bus
                type: stringValue
                writeable: 0
                value: EMS2_0
                allowedValues:
                  - No_Bus
                  - EMS2_0
                  - Detecting
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/type:
    get:
      operationId: getCascadeSystemType
      description: Get the system type.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - unknown
                          - heatpump_cascade
                          - heatpump_single
                          - eHybrid
                          - hybman
                          - hybridBoiler
                          - boiler
              example:
                id: /system/type
                type: stringValue
                writeable: 0
                value: eHybrid
                allowedValues:
                  - unknown
                  - heatpump_cascade
                  - heatpump_single
                  - eHybrid
                  - hybman
                  - hybridBoiler
                  - boiler
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/iSRC/installationStatus:
    get:
      operationId: getSystemISRCInstallationStatus
      description: Get the current iSRC installation status.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/iSRC/installationStatus
                type: stringValue
                writeable: 0
                value: SUCCESS
                allowedValues:
                  - TIMEOUT
                  - IN_PROGRESS
                  - SUCCESS
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/iSRC/supportStatus:
    get:
      operationId: getSystemISRCSupportStatus
      description: Get the current iSRC support status.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/iSRC/supportStatus
                type: stringValue
                writeable: 0
                value: SUPPORTED
                allowedValues:
                  - NOT_SUPPORTED_INCOMPATIBLE_CONTROLLER
                  - NOT_SUPPORTED_PAIRING_ENABLED
                  - SUPPORTED
                  - IN_EVALUATION
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/additionalHeaterCh:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainAdditionalHeaterCh
      description: Get the active constraints for the additional heater for central heating.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/additionalHeaterCh
                type: stringValue
                writeable: 0
                value: externalInputs_pv
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/additionalHeaterDhwTank:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainAdditionalHeaterDhwTank
      description: Get the active constraints for the additional heater for domestic hot water tank.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/additionalHeaterDhwTank
                type: stringValue
                writeable: 0
                value: lowSourceTempStopCooling
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/additionalHeaterPrimaryCircuit:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainAdditionalHeaterPrimaryCircuit
      description: Get the active constraints for the additional heater primary circuit domain.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/additionalHeaterPrimaryCircuit
                type: stringValue
                writeable: 0
                value: externalInputs_heatingBlock
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/ch:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainCh
      description: Get the active constraints for central heating.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/ch
                type: stringValue
                writeable: 0
                value: externalInputs_heatingBlock
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/cooling:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainCooling
      description: Get the active constraints for cooling.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/cooling
                type: stringValue
                writeable: 0
                value: externalInputs_heatingBlock
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/dhw:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainDhw
      description: Get the active constraints for domestic hot water.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/dhw
                type: stringValue
                writeable: 0
                value: externalInputs_heatingBlock
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/pool:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainPool
      description: Get the active constraints for pool heating.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/pool
                type: stringValue
                writeable: 0
                value: externalInputs_heatingBlock
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/affectedDomain/refrigerantCircuit:
    get:
      operationId: getSystemPowerConstraintsAffectedDomainRefrigerantCircuit
      description: Get the refrigerant circuit that is affected by power constraints.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/affectedDomain/refrigerantCircuit
                type: stringValue
                writeable: 0
                value: externalInputs_pv
                allowedValues: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/dhwReduceTempOnAlarm/status:
    get:
      operationId: getSystemPowerConstraintsDhwReduceTempOnAlarmStatus
      description: Get the status of the domestic hot water reduce temperature on alarm power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/dhwReduceTempOnAlarm/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/additionalHeaterBlock/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsAdditionalHeaterBlockStatus
      description: Get the status of the additional heater block power constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/additionalHeaterBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/appliancePowerBlock/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsAppliancePowerBlockStatus
      description: Get the status of the power block constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/appliancePowerBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/appliancePowerLimit/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsAppliancePowerLimitStatus
      description: Get the status of the appliance power limitation constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/appliancePowerLimit/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/coolingBlock/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsCoolingBlockStatus
      description: Get the status of the cooling block power constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/coolingBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/dhwBlock/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsDhwBlockStatus
      description: Get the status of the domestic hot water block power constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/dhwBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/heatingBlock/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsHeatingBlockStatus
      description: Get the status of the heating block power constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/heatingBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/externalInputs/pv/status:
    get:
      operationId: getSystemPowerConstraintsExternalInputsPvStatus
      description: Get the status of the photovoltaic power constraint via external input.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/externalInputs/pv/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/highSourceTempStopCooling/status:
    get:
      operationId: getSystemPowerConstraintsHighSourceTempStopCoolingStatus
      description: Get the status of the high source temperature stop cooling power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/highSourceTempStopCooling/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/highSourceTempStopHeating/status:
    get:
      operationId: getSystemPowerConstraintsHighSourceTempStopHeatingStatus
      description: Get the status of the high source temperature stop heating power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/highSourceTempStopHeating/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/lowSourceTempStopCooling/status:
    get:
      operationId: getSystemPowerConstraintsLowSourceTempStopCoolingStatus
      description: Get the status of the low source temperature stop cooling power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/lowSourceTempStopCooling/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/lowSourceTempStopHeating/status:
    get:
      operationId: getSystemPowerConstraintsLowSourceTempStopHeatingStatus
      description: Get the status of the low source temperature stop heating power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/lowSourceTempStopHeating/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/maintenanceMode/status:
    get:
      operationId: getSystemPowerConstraintsMaintenanceModeStatus
      description: Get the status of the maintenance mode power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/maintenanceMode/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/powerElecDesired/status:
    get:
      operationId: getSystemPowerConstraintsPowerElecDesiredStatus
      description: Get the status of the desired electrical power constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/powerElecDesired/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/powerElecLimitation/status:
    get:
      operationId: getSystemPowerConstraintsPowerElecLimitationStatus
      description: Get the status of the electrical power limitation constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/powerElecLimitation/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/powerGuard/status:
    get:
      operationId: getSystemPowerConstraintsPowerGuardStatus
      description: Get the status of the power guard constraint.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/powerGuard/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/silentMode/status:
    get:
      operationId: getSystemPowerConstraintsSilentModeStatus
      description: Get the status of the silent mode from system power constraints.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/silentMode/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerConstraints/userAdditionalHeaterBlock/status:
    get:
      operationId: getSystemPowerConstraintsUserAdditionalHeaterBlockStatus
      description: Get whether the user-configured additional-heater power constraint is active.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerConstraints/userAdditionalHeaterBlock/status
                type: stringValue
                writeable: 0
                value: active
                allowedValues:
                  - active
                  - inactive
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerGuard/active:
    get:
      operationId: getSystemPowerGuardActive
      description: Informs if the power guard is active.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerGuard/active
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/powerLimitation/active:
    get:
      operationId: getSystemPowerLimitationActive
      description: Get the status of system power limitation.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/powerLimitation/active
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/sensors/temperatures/outdoor_t1:
    get:
      operationId: getSystemSensorsTemperaturesOutdoorT1
      description: Get the system outdoor temperature measured by the outdoor sensor.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/sensors/temperatures/outdoor_t1
                type: floatValue
                writeable: 0
                value: 30
                unitOfMeasure: C
                state:
                  - open: -32768
                    short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/update/status:
    get:
      operationId: getSystemUpdateStatus
      description: Get the status of the system update.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BaseResource'
                  - $ref: '#/components/schemas/UpdateStatus'
              example:
                id: /system/update/status
                type: updateStatus
                writeable: 0
                value:
                  recipeId: ZiGhCf73rVVS
                  updateId: '45625'
                  status:
                    value: success
                    allowedValues:
                      - idle
                      - start
                      - run
                      - download
                      - in_progress
                      - success
                      - failure
                      - done
                  progress:
                    nsteps: 2
                    cur_step: 1
                    cur_percent: 90
                    percent: 90
                    cur_stepName: HMI
                    cur_stepType:
                      value: system_transfer
                      allowedValues:
                        - ''
                        - start_update
                        - system_transfer
                        - install
                        - rollback
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/update/report:
    get:
      operationId: getSystemUpdateReport
      description: Get the update report for the system.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BaseResource'
                  - $ref: '#/components/schemas/UpdateReport'
              example:
                id: /system/update/report
                type: updateReport
                writeable: 0
                timeStamp: '1708683200'
                recipeId: ZiGhCf73rVVS
                status: SUCCESS
                gatewayId: '102041838'
                logs:
                  - msg: pre-inst running
                    timeStampMs: '1712741772170'
                  - msg: post-inst running
                    timeStampMs: '1712741772250'
                values:
                  - moduleId: 5.714518173668752e+21
                    distributionSetId: '1532123'
                    status: SUCCESS
                    previousSwVersion: 4.0.0-charlie
                    statusCode: 0
                    timeStamp: '1721825354'
                    logs:
                      - msg: another dummy module log on nil from within handler
                        timeStampMs: '1721825354359'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/currentSetpoint:
    get:
      operationId: getSystemVariableTariffChCurrentSetpoint
      description: Get the current setpoint for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/variableTariff/ch/currentSetpoint
                type: floatValue
                writeable: 0
                value: 21
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/highPriceDelta:
    get:
      operationId: getSystemVariableTariffChHighPriceDelta
      description: Get the current high price delta for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /system/variableTariff/ch/highPriceDelta
                type: floatValue
                writeable: 1
                value: 1
                minValue: 0.5
                maxValue: 2
                stepSize: 0.5
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/lowPriceDelta:
    get:
      operationId: getSystemVariableTariffChLowPriceDelta
      description: Get the current low price delta for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /system/variableTariff/ch/lowPriceDelta
                type: floatValue
                writeable: 1
                value: 1
                minValue: 0.5
                maxValue: 2
                stepSize: 0.5
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/midPriceSetpoint:
    get:
      operationId: getSystemVariableTariffChMidPriceSetpoint
      description: Get the current mid price setpoint for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /system/variableTariff/ch/midPriceSetpoint
                type: floatValue
                writeable: 1
                value: 21
                minValue: 7
                maxValue: 28
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/optimization:
    get:
      operationId: getSystemVariableTariffChOptimization
      description: Get the current optimization setting for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - 'off'
                          - 'on'
              example:
                id: /system/variableTariff/ch/optimization
                writeable: 1
                type: stringValue
                value: 'on'
                allowedValues:
                  - 'off'
                  - 'on'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/ch/status:
    get:
      operationId: getSystemVariableTariffChStatus
      description: Get the current status for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/variableTariff/ch/status
                type: stringValue
                writeable: 0
                value: disabled
                allowedValues:
                  - disabled
                  - paused
                  - active
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/currentPriceCatagorization:
    get:
      operationId: getSystemVariableTariffCurrentPriceCategorization
      description: Get the current price categorization for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/variableTariff/currentPriceCatagorization
                writeable: 0
                type: floatValue
                value: 1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/dhw/currentOpmode:
    get:
      operationId: getSystemVariableTariffDhwCurrentOpMode
      description: Get the current operating mode for the domestic hot water variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - low
                          - high
                          - eco
              example:
                id: /system/variableTariff/dhw/currentOpmode
                writeable: 0
                type: stringValue
                value: eco
                allowedValues:
                  - low
                  - high
                  - eco
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/dhw/highPriceEnable:
    get:
      operationId: getSystemVariableTariffDhwHighPriceEnable
      description: Get the current high price enable setting for the domestic hot water variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - 'yes'
                          - 'no'
              example:
                id: /system/variableTariff/dhw/highPriceEnable
                writeable: 1
                type: stringValue
                value: 'yes'
                allowedValues:
                  - 'yes'
                  - 'no'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/dhw/lowPriceEnable:
    get:
      operationId: getSystemVariableTariffDhwLowPriceEnable
      description: Get the current low price enable setting for the domestic hot water variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - 'yes'
                          - 'no'
              example:
                id: /system/variableTariff/dhw/lowPriceEnable
                writeable: 1
                type: stringValue
                value: 'yes'
                allowedValues:
                  - 'yes'
                  - 'no'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/dhw/optimization:
    get:
      operationId: getSystemVariableTariffDhwOptimization
      description: Get the current optimization setting for the domestic hot water variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - 'off'
                          - 'on'
              example:
                id: /system/variableTariff/dhw/optimization
                writeable: 1
                type: stringValue
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/dhw/status:
    get:
      operationId: getSystemVariableTariffDhwStatus
      description: Get the current status for the domestic hot water variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/variableTariff/dhw/status
                type: stringValue
                writeable: 0
                value: disabled
                allowedValues:
                  - disabled
                  - paused
                  - active
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/supportStatus:
    get:
      operationId: getSystemVariableTariffSupportStatus
      description: Get the current support status for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ArrayData'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /system/variableTariff/supportStatus
                type: arrayData
                writeable: 0
                values:
                  - vta_gateway
                allowedValues:
                  - not_supported
                  - vta_gateway
                  - in_evaluation
                  - blocked
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /system/variableTariff/tariffId:
    get:
      operationId: getSystemVariableTariffTariffId
      description: Get the current tariff ID for the variable tariff channel.
      tags:
        - system
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /system/variableTariff/tariffId
                type: stringValue
                writeable: 1
                value: TVPE-DK1-c7485dcc8d256a6f197ed780268
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/configuration:
    get:
      operationId: getZoneConfiguration
      description: Get a list of available zone icons and maximum supported zones.
      tags:
        - zones
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ConfigData'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /zones/configuration
                type: configData
                writeable: 0
                values:
                  availableIcons:
                    - type: arrayData
                    - allowedValues:
                        - KITCHEN
                        - LIVING_ROOM
                        - DINING_ROOM
                        - BEDROOM
                        - MASTER_ROOM
                        - CHILDRENS_ROOM
                        - BATHROOM
                        - OFFICE
                        - HALLWAY
                        - HOBBY_ROOM
                        - LAUNDRY
                        - LIBRARY
                  maxSupportedZones:
                    - type: integerValue
                    - value: 16
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/actualHumidity:
    get:
      operationId: getDevicesDeviceXActualHumidity
      description: Get the actual humidity of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/actualHumidity
                writeable: 0
                type: floatValue
                value: 57
                unitOfMeasure: '%'
                state:
                  - overflow: 254
                  - underflow: 253
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/actuatorModulation:
    get:
      operationId: getDevicesDeviceXActuatorModulation
      description: Get the actuator modulation of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/actuatorModulation
                writeable: 0
                type: floatValue
                value: 20
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/actuatorPower:
    get:
      operationId: getDevicesDeviceXActuatorPower
      description: Get the actuator power of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/actuatorPower
                writeable: 0
                type: floatValue
                value: 20
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/assignedHC:
    get:
      operationId: getDevicesDeviceXAssignedHC
      description: Get the assigned heating circuit of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/assignedHC
                writeable: 0
                type: stringValue
                value: hc1
                allowedValues:
                  - hc1
                  - hc2
                  - hc3
                  - hc4
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/battery:
    get:
      operationId: getDevicesDeviceXBattery
      description: Get the battery status of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/battery
                writeable: 0
                type: stringValue
                value: BAT_NORMAL
                allowedValues:
                  - NO_BAT
                  - BAT_NORMAL
                  - BAT_FOTA_FORBIDDEN
                  - BAT_LOW
                  - BAT_TOO_LOW
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/currentRoomSetpoint:
    get:
      operationId: getDevicesDeviceXCurrentRoomSetpoint
      description: Get the current room setpoint of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/currentRoomSetpoint
                writeable: 0
                type: floatValue
                value: 18
                unitOfMeasure: C
                state:
                  - 'off': 0
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/errors:
    get:
      operationId: getDevicesDeviceXErrors
      description: Get the error status of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/DeviceErrors'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/errors
                writeable: 0
                type: deviceErrors
                values:
                  - errorType: eTRVValveStatus
                    occurrenceId: 0
                    value: valveTight
                    allowedValues:
                      - valveTight
                      - bigAdjRange
                      - smallAdjRange
                      - valveErrPos
                  - errorType: defectiveTempSensor
                    occurrenceId: 10
                    value: active
                    allowedValues:
                      - inactive
                      - active
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/name:
    parameters:
      - $ref: '#/components/parameters/DeviceIdParameter'
    get:
      operationId: getDevicesDeviceXName
      description: Get the name of a specific device.
      tags:
        - devices
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/name
                type: stringValue
                writeable: 0
                value: CR20RF
                valueConfig:
                  charset: UTF8
                  codingType: ascii
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/operationMode:
    get:
      operationId: getDevicesDeviceXOperationMode
      description: Get the operation mode of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        type: string
                        enum:
                          - auto
                          - manual
                          - party
              example:
                id: /devices/device1/operationMode
                writeable: 0
                type: stringValue
                value: manual
                allowedValues:
                  - auto
                  - manual
                  - party
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/rfConnectionStatus:
    get:
      operationId: getDevicesDeviceXRfConnectionStatus
      description: Get the RF connection status of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        type: string
                        enum:
                          - OFFLINE
                          - ONLINE
              example:
                id: /devices/device1/rfConnectionStatus
                writeable: 0
                type: stringValue
                value: ONLINE
                allowedValues:
                  - OFFLINE
                  - ONLINE
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/rfErrorCause:
    get:
      operationId: getDevicesDeviceXRfErrorCause
      description: Get the RF error cause of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        type: string
                        enum:
                          - INVALID_CONFIGURATION
                          - MAX_DEVICES_REACHED
                          - NO_ERROR
                          - PAIRING_TIMEOUT
              example:
                id: /devices/device1/rfErrorCause
                writeable: 0
                type: stringValue
                value: NO_ERROR
                allowedValues:
                  - INVALID_CONFIGURATION
                  - MAX_DEVICES_REACHED
                  - NO_ERROR
                  - PAIRING_TIMEOUT
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/rfPairedStatus:
    get:
      operationId: getDevicesDeviceXRfPairedStatus
      description: Get the RF paired status of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        type: string
                        enum:
                          - NOT_PAIRED
                          - IN_PAIRING
                          - PAIRED
                          - EXCLUDED
              example:
                id: /devices/device1/rfPairedStatus
                writeable: 0
                type: stringValue
                value: NOT_PAIRED
                allowedValues:
                  - NOT_PAIRED
                  - IN_PAIRING
                  - PAIRED
                  - EXCLUDED
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/rfTimeofConnectionLost:
    get:
      operationId: getDevicesDeviceXRfTimeOfConnectionLost
      description: Get the time at which the specified device's RF connection was last lost.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/rfTimeofConnectionLost
                writeable: 0
                type: stringValue
                value: 2022-2-15T16:15
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/roomtemperature:
    get:
      operationId: getDevicesDeviceXRoomTemperature
      description: Get the room temperature of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/roomtemperature
                writeable: 0
                type: floatValue
                value: 25.8
                unitOfMeasure: C
                state:
                  - overflow: -32767
                  - underflow: -32766
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/sgtin:
    get:
      operationId: getDevicesDeviceXSgtin
      description: Get the SGTIN of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/sgtin
                writeable: 0
                type: stringValue
                value: 3014Faaaabbbccccddd
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/signal:
    get:
      operationId: getDevicesDeviceXSignal
      description: Get the RF signal strength of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/signal
                writeable: 0
                type: floatValue
                value: -80
                unitOfMeasure: db
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/signalIcon:
    get:
      operationId: getDevicesDeviceXSignalIcon
      description: Get the RF signal strength indicator of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/signalIcon
                writeable: 0
                type: stringValue
                value: VERY_GOOD
                allowedValues:
                  - NO_CONNECTION
                  - POOR
                  - GOOD
                  - VERY_GOOD
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/type:
    get:
      operationId: getDevicesDeviceXType
      description: Get the type of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/type
                writeable: 0
                type: stringValue
                value: XLOW_RF
                allowedValues:
                  - UnDEFINED
                  - XLOWRF
                  - LOW_RF
                  - ETRV
                  - ROOM_SENSOR
                  - OUTDOOR_SENSOR
                  - IUFH_240v
                  - IUFH_24V
                  - SMARTPLUG_REPEATER
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/versionFirmware:
    get:
      operationId: getDevicesDeviceXVersionFirmware
      description: Get the firmware version of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /devices/device1/versionFirmware
                writeable: 0
                type: stringValue
                value: 18.00.00
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/zoneId:
    get:
      operationId: getDevicesDeviceXZoneId
      description: Get the zone ID of a specific device.
      tags:
        - devices
      parameters:
        - $ref: '#/components/parameters/DeviceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /devices/device1/zoneId
                type: integerValue
                writeable: 1
                value: 3
                minValue: 1
                maxValue: 16
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/currentFriwaSupplyTemperature:
    parameters:
      - $ref: '#/components/parameters/DhwCircuitIdParameter'
    get:
      operationId: getDhwCircuitsDhwXCurrentFriwaSupplyTemperature
      description: Get the current Friwa supply temperature for the primary domestic hot water circuit.
      tags:
        - dhw circuits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/currentFriwaSupplyTemperature
                type: floatValue
                writeable: 0
                value: 55
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/friwaPrimaryPumpModulation:
    parameters:
      - $ref: '#/components/parameters/DhwCircuitIdParameter'
    get:
      operationId: getDhwCircuitsDhwXFriwaPrimaryPumpModulation
      description: Get Friwa primary-pump modulation for the primary domestic hot water circuit.
      tags:
        - dhw circuits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/friwaPrimaryPumpModulation
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/actualTemp:
    get:
      operationId: getDhwCircuitsDhwXActualTemp
      description: Get the domestic hot water actual temperature.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/actualTemp
                writeable: 0
                type: floatValue
                value: 55
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/chargeRemainingTime:
    get:
      operationId: getDhwCircuitsDhwXChargeRemainingTime
      description: Get the remaining time in domestic hot water extra mode.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/chargeRemainingTime
                writeable: 0
                type: floatValue
                value: 55
                unitOfMeasure: mins
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/currentSetpoint:
    get:
      operationId: getDhwCircuitsDhwXCurrentSetpoint
      description: Get the current temperature setpoint for domestic hot water.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/currentSetpoint
                writeable: 0
                type: floatValue
                value: 10
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/currentTemperatureLevel:
    get:
      operationId: getDhwCircuitsDhwXCurrentTemperatureLevel
      description: Get the domestic hot water current temperature level.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/currentTemperatureLevel
                writeable: 0
                type: stringValue
                value: 'off'
                allowedValues:
                  - 'off'
                  - low
                  - high
                  - eco
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/outTemp:
    parameters:
      - $ref: '#/components/parameters/DhwCircuitIdParameter'
    get:
      operationId: getDhwCircuitsDhwXOutTemp
      description: Get the output temperature for the specified domestic hot water circuit.
      tags:
        - dhw circuits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/outTemp
                writeable: 0
                type: floatValue
                value: 50
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/overallStatus:
    get:
      operationId: getDhwCircuitsDhwXOverallStatus
      description: Get overall status of the domestic hot water.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - dhw_enabled
                          - dhw_disabled
                          - floor_drying
                          - td
                          - extra
                          - away
                          - holiday
                          - manual_on_high
                          - manual_on_low
                          - manual_on_eco
                          - manual_off
                          - auto
              example:
                id: /dhwCircuits/dhw1/overallStatus
                type: stringValue
                writeable: 0
                value: dhw_disabled
                allowedValues:
                  - dhw_enabled
                  - dhw_disabled
                  - floor_drying
                  - td
                  - extra
                  - away
                  - holiday
                  - manual_on_high
                  - manual_on_low
                  - manual_on_eco
                  - manual_off
                  - auto
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/tdrunningStatus:
    get:
      operationId: getDhwCircuitsDhwXTdRunningStatus
      description: Get the current status of the thermal disinfection function.
      tags:
        - dhw circuits
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BinaryStringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/tdrunningStatus
                writeable: 0
                type: stringValue
                value: 'off'
                allowedValues:
                  - 'off'
                  - 'on'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /dhwCircuits/{dhwCircuitId}/volumeFlow:
    parameters:
      - $ref: '#/components/parameters/DhwCircuitIdParameter'
    get:
      operationId: getDhwCircuitsDhwXVolumeFlow
      description: Get the volume flow for the specified domestic hot water circuit.
      tags:
        - dhw circuits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /dhwCircuits/dhw1/volumeFlow
                writeable: 0
                type: floatValue
                value: 20
                unitOfMeasure: l/min
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/actualHumidity:
    get:
      operationId: getHeatingCircuitsHcXActualHumidity
      description: Get the actual humidity of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/actualHumidity
                type: floatValue
                writeable: 0
                value: 255
                unitOfMeasure: '%'
                state:
                  - invalid: 255
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/boostRemainingTime:
    get:
      operationId: getHeatingCircuitsHcXBoostRemainingTime
      description: Get the remaining duration of the active boost mode.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/boostRemainingTime
                type: floatValue
                writeable: 0
                value: 480
                unitOfMeasure: mins
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/currentRoomSetpoint:
    get:
      operationId: getHeatingCircuitsHcXCurrentRoomSetpoint
      description: Get the requested room temperature of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/currentRoomSetpoint
                type: floatValue
                writeable: 0
                value: 21
                unitOfMeasure: C
                state:
                  - 'off': 0
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/currentSuWiMode:
    get:
      operationId: getHeatingCircuitsHcXCurrentSuWiMode
      description: Get the current summer winter mode of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - forced
                          - 'off'
                          - cooling
              example:
                id: /heatingCircuits/hc1/currentSuWiMode
                type: stringValue
                writeable: 0
                value: forced
                allowedValues:
                  - forced
                  - 'off'
                  - cooling
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/maxFlowTemp:
    get:
      operationId: getHeatingCircuitsHcXMaxFlowTemp
      description: Get the maximum flow temperature of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /heatingCircuits/hc1/maxFlowTemp
                type: floatValue
                writeable: 1
                value: 48
                unitOfMeasure: C
                minValue: 30
                maxValue: 60
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/mixerPosition:
    get:
      operationId: getHeatingCircuitsHcXMixerPosition
      description: Get the mixer position of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/mixerPosition
                type: integerValue
                writeable: 0
                value: 60
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/openWindowDetection/status:
    get:
      operationId: getHeatingCircuitsHcXOpenWindowDetectionStatus
      description: Get the open window detection status of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - closed
                          - opened
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/overallStatus:
    get:
      operationId: getHeatingCircuitsHcXOverallStatus
      description: Get overall status of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - ch_enabled
                          - ch_disabled
                          - emergency_mode
                          - floor_drying
                          - summer_idle
                          - boost
                          - away
                          - holiday
                          - cooling_manual_on
                          - cooling_manual_off
                          - heating_manual_on
                          - heating_manual_off
                          - heating_auto
              example:
                id: /heatingCircuits/hc1/overallStatus
                type: stringValue
                writeable: 0
                value: ch_disabled
                allowedValues:
                  - ch_enabled
                  - ch_disabled
                  - emergency_mode
                  - floor_drying
                  - summer_idle
                  - boost
                  - away
                  - holiday
                  - cooling_manual_on
                  - cooling_manual_off
                  - heating_manual_on
                  - heating_manual_off
                  - heating_auto
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/pumpStatus:
    get:
      operationId: getHeatingCircuitsHcXPumpStatus
      description: Get the heating circuit pump status.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/pumpStatus
                type: stringValue
                writeable: 0
                value: 'on'
                allowedValues:
                  - 'on'
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatingCircuits/{heatingCircuitId}/roomtemperature:
    get:
      operationId: getHeatingCircuitsHcXRoomTemperature
      description: Get the current room temperature of the heating circuit.
      tags:
        - heating circuits
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatingCircuits/hc1/roomtemperature
                type: floatValue
                writeable: 0
                value: 20
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/numberOfStarts:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXNumberOfStarts
      description: Get the heat sources number of starts.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/numberOfStarts
                type: emonValue
                writeable: 0
                values:
                  - ch: 139
                  - dhw: 30
                  - total: 30
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/oduFanSpeed:
    get:
      operationId: getHeatSourcesHsXOduFanSpeed
      description: Get the fan speed of the outdoor unit.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hsX/oduFanSpeed
                type: integerValue
                writeable: 0
                value: 60
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/pumpVolumeFlow:
    get:
      operationId: getHeatSourcesHsXPumpVolumeFlow
      description: Get the pump volume flow.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/pumpVolumeFlow
                type: integerValue
                writeable: 0
                value: 2
                unitOfMeasure: l/h
                state:
                  - lowflow: 65535
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/status:
    get:
      operationId: getHeatSourcesHsXRefrigerantStatus
      description: Get the status of the heat source in the refrigerant circuit.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/refrigerant/status
                type: stringValue
                writeable: 0
                value: idle
                allowedValues:
                  - idle
                  - startup
                  - heating
                  - cooling
                  - defrost
                  - passive_defrost
                  - shutoff
                  - alarm
                  - test_mode
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/compressorElecPowerActual:
    get:
      operationId: getHeatSourcesHsXRefrigerantCompressorElecPowerActual
      description: Get the actual power of the compressor in refrigerant circuit.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/refrigerant/compressorElecPowerActual
                type: floatValue
                writeable: 0
                value: -3276.8
                unitOfMeasure: W
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/compressorTemp:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXRefrigerantCompressorTemp
      description: Get the temperature of the compressor in the refrigerant circuit.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/refrigerant/compressorTemp
                type: floatValue
                writeable: 0
                value: 55
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/heatCarrierPumpSpeed:
    get:
      operationId: getHeatSourcesHsXRefrigerantHeatCarrierPumpSpeed
      description: Get the speed of the heat carrier pump of the heat source (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs${hs_id}/refrigerant/heatCarrierPumpSpeed
                writeable: 0
                type: integerValue
                value: 60
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/liquidPipeCoolingTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantLiquidPipeCoolingTemp
      description: Get the liquid pipe cooling temperature.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/liquidPipeCoolingTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/liquidPipeHeatingTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantLiquidPipeHeatingTemp
      description: Get the liquid pipe heating temperature (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/liquidPipeHeatingTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/lowPressureTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantLowPressureTemp
      description: Get the low-pressure temperature in the refrigerant circuit (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/lowPressureTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/highPressureTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantHighPressureTemp
      description: Get the high pressure temperature in the refrigerant circuit.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/highPressureTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/hotGasTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantHotGasTemp
      description: Get the hot gas temperature in the refrigerant circuit (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/hotGasTemp
                type: floatValue
                writeable: 0
                value: 55
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/suctionGasTemp:
    get:
      operationId: getHeatSourcesHsXRefrigerantSuctionGasTemp
      description: Get the suction gas temperature.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/refrigerant/suctionGasTemp
                type: floatValue
                writeable: 0
                value: 55
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/returnFlowTemp:
    get:
      operationId: getHeatSourcesHsXReturnFlowTemp
      description: Get the return flow temperature of the heat source.
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/returnFlowTemp
                type: floatValue
                writeable: 0
                value: -3276.8
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/refrigerant/compressorActualSpeed:
    get:
      operationId: getHeatSourcesHsXRefrigerantCompressorActualSpeed
      description: Get the actual speed of the compressor in the refrigerant circuit (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/refrigerant/compressorActualSpeed
                type: integerValue
                writeable: 0
                value: 0
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/supplyFlowCondenserTemp:
    get:
      operationId: getHeatSourcesHsXSupplyFlowCondenserTemp
      description: Get the heat source supply-flow condenser temperature (resource not supported in hybrid systems).
      tags:
        - heat sources
      parameters:
        - $ref: '#/components/parameters/HeatSourceIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/supplyFlowCondenserTemp
                type: floatValue
                writeable: 0
                value: 45
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/workingTime:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXWorkingTime
      description: Get the heat source working time.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/workingTime
                type: emonValue
                writeable: 0
                values:
                  - ch: 139
                  - dhw: 30
                  - pool: 10
                  - cooling: 10
                  - total: 30
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/safetyBoard/status:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXSafetyBoardStatus
      description: Get the operation state of the safety board for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/safetyBoard/status
                type: stringValue
                writeable: 0
                value: initialization
                allowedValues:
                  - initialization
                  - normal
                  - information
                  - alarm
                  - critical
                  - service
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/brineCircuit/collectorInflowTemp:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXBrineCircuitCollectorInflowTemp
      description: Get the brine-circuit collector inflow temperature for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/brineCircuit/collectorInflowTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32768
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/brineCircuit/collectorOutflowTemp:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXBrineCircuitCollectorOutflowTemp
      description: Get the brine-circuit collector outflow temperature for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/brineCircuit/collectorOutflowTemp
                type: floatValue
                writeable: 0
                value: 44
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32768
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/brineCircuit/pressure:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXBrineCircuitPressure
      description: Get the brine-circuit pressure for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/brineCircuit/pressure
                type: floatValue
                writeable: 0
                value: 24.5
                unitOfMeasure: bar
                state:
                  - invalid: 255
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/brineCircuit/pumpSpeed:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXBrineCircuitPumpSpeed
      description: Get the brine-circuit pump speed for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/brineCircuit/pumpSpeed
                type: integerValue
                writeable: 0
                value: 60
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/brineCircuit/volumeFlow:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXBrineCircuitVolumeFlow
      description: Get the brine-circuit volume flow for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/IntegerValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/brineCircuit/volumeFlow
                type: integerValue
                writeable: 0
                value: 2
                unitOfMeasure: l/h
                state:
                  - lowflow: 65535
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/heatPumpType:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXHeatPumpType
      description: Get the heat pump type for the specified heat source.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs1/heatPumpType
                type: stringValue
                writeable: 0
                value: air_water
                allowedValues:
                  - air_water
                  - liquid_water
                  - exhaustAir_water
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/emon/chConsumption:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXEmonChConsumption
      description: Get the central heating (CH) consumption of heat source 2 (hs2) for energy monitoring.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/emon/chConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - compressor: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/emon/dhwConsumption:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXEmonDhwConsumption
      description: Get the domestic hot water consumption of heat source 2 (hs2) for energy monitoring.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/emon/dhwConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - compressor: 2
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /heatSources/{heatSourceId}/emon/totalConsumption:
    parameters:
      - $ref: '#/components/parameters/HeatSourceIdParameter'
    get:
      operationId: getHeatSourcesHsXEmonTotalConsumption
      description: Get the heat source 2 (hs2) total consumption for energy monitoring.
      tags:
        - heat sources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/EmonValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /heatSources/hs2/emon/totalConsumption
                writeable: 0
                type: emonValue
                values:
                  - outputProduced: 30
                  - compressor: 14
                unit: kWh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /recordings/dhwCircuits/{dhwCircuitId}/actualTemp:
    get:
      operationId: getRecordingsDhwCircuitsDhwActualTemp
      description: |-
        Returns recording data for actual temperature of a domestic hot water circuit.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/DhwCircuitIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/dhwCircuits/dhw1/actualTemp?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: C
                    recordedResource:
                      id: /dhwCircuits/dhw1/actualTemp
                      uri: http://192.0.2.10/dhwCircuits/dhw1/actualTemp
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 0.452
                            c: 1
                          - 'y': 0.461
                            c: 1
                          - 'y': 0.448
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 4.5
                            c: 24
                          - 'y': 4.55
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 45.1
                            c: 500
                          - 'y': 45.3
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatingCircuits/{heatingCircuitId}/roomtemperature:
    get:
      operationId: getRecordingsHeatingCircuitsHcXRoomTemperature
      description: |-
        Returns recording data for room temperature of a heating circuit.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/HeatingCircuitIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatingCircuits/hc1/roomtemperature?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: C
                    recordedResource:
                      id: /heatingCircuits/hc1/roomtemperature
                      uri: http://192.0.2.10/heatingCircuits/hc1/roomtemperature
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 21.5
                            c: 1
                          - 'y': 22
                            c: 1
                          - 'y': 21.8
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 21.2
                            c: 24
                          - 'y': 21.9
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 21.6
                            c: 500
                          - 'y': 21.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/ch/compressor:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonChCompressor
      description: |-
        Gets recordings of central heating compressor energy consumption for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/ch/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/ch/compressor
                      uri: http://192.0.2.10/heatSources/hs2/emon/ch/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 3.25
                            c: 1
                          - 'y': 3.68
                            c: 1
                          - 'y': 3.47
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 80.4
                            c: 24
                          - 'y': 91.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 2351.8
                            c: 500
                          - 'y': 2667.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/ch/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonChNumberOfStarts
      description: |-
        Gets recordings of the number of central heating starts for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/ch/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/hs2/emon/ch/numberOfStarts
                      uri: http://192.0.2.10/heatSources/hs2/emon/ch/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 8.45
                            c: 1
                          - 'y': 9.12
                            c: 1
                          - 'y': 8.78
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 208.9
                            c: 24
                          - 'y': 225.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6113.8
                            c: 500
                          - 'y': 6593.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/ch/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonChOutputProduced
      description: |-
        Gets recordings of central heating energy output for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/ch/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/ch/outputProduced
                      uri: http://192.0.2.10/heatSources/hs2/emon/ch/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 8.45
                            c: 1
                          - 'y': 9.12
                            c: 1
                          - 'y': 8.78
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 208.9
                            c: 24
                          - 'y': 225.4
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6113.8
                            c: 500
                          - 'y': 6593.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/ch/workingTime:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonChWorkingTime
      description: |-
        Gets recordings of central heating working time for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/ch/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/hs2/emon/ch/workingTime
                      uri: http://192.0.2.10/heatSources/hs2/emon/ch/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/dhw/compressor:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonDhwCompressor
      description: |-
        Gets recordings of domestic hot water compressor energy consumption for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/dhw/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/dhw/compressor
                      uri: http://192.0.2.10/heatSources/hs2/emon/dhw/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 1.6
                            c: 1
                          - 'y': 1.77
                            c: 1
                          - 'y': 1.71
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 39.4
                            c: 24
                          - 'y': 43.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1155.7
                            c: 500
                          - 'y': 1277.1
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/dhw/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonDhwNumberOfStarts
      description: |-
        Gets recordings of the number of domestic hot water starts for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/dhw/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/hs2/emon/dhw/numberOfStarts
                      uri: http://192.0.2.10/heatSources/hs2/emon/dhw/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/dhw/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonDhwOutputProduced
      description: |-
        Gets recordings of domestic hot water energy output for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/dhw/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/dhw/outputProduced
                      uri: http://192.0.2.10/heatSources/hs2/emon/dhw/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 2.75
                            c: 1
                          - 'y': 3.12
                            c: 1
                          - 'y': 2.94
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 68.1
                            c: 24
                          - 'y': 77.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 1993.5
                            c: 500
                          - 'y': 2258.7
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/dhw/workingTime:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonDhwWorkingTime
      description: |-
        Gets recordings of domestic hot water working time for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/dhw/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/hs2/emon/dhw/workingTime
                      uri: http://192.0.2.10/heatSources/hs2/emon/dhw/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/total/compressor:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonTotalCompressor
      description: |-
        Gets recordings of total compressor energy consumption for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/total/compressor?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/total/compressor
                      uri: http://192.0.2.10/heatSources/hs2/emon/total/compressor
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 4.85
                            c: 1
                          - 'y': 5.45
                            c: 1
                          - 'y': 5.18
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 119.8
                            c: 24
                          - 'y': 134.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 3507.5
                            c: 500
                          - 'y': 3938.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/total/numberOfStarts:
    get:
      operationId: getRecordingsHeatSourcesHs2EmonTotalNumberOfStarts
      description: |-
        Gets recordings of the total number of starts for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/total/numberOfStarts?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: count
                    recordedResource:
                      id: /heatSources/hs2/emon/total/numberOfStarts
                      uri: http://192.0.2.10/heatSources/hs2/emon/total/numberOfStarts
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/total/outputProduced:
    get:
      operationId: getRecordingsHeatSourcesHsXEmonTotalOutputProduced
      description: |-
        Gets recordings of total heat output for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/total/outputProduced?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: kWh
                    recordedResource:
                      id: /heatSources/hs2/emon/total/outputProduced
                      uri: http://192.0.2.10/heatSources/hs2/emon/total/outputProduced
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 11.2
                            c: 1
                          - 'y': 12.24
                            c: 1
                          - 'y': 11.72
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 277
                            c: 24
                          - 'y': 302.6
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 8107.3
                            c: 500
                          - 'y': 8852.4
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /recordings/heatSources/{heatSourceId}/emon/total/workingTime:
    get:
      operationId: getRecordingsHeatSourcesHs2EmonTotalWorkingTime
      description: |-
        Gets recordings of total working time for a heat source.
        The supported recording request uses `sampleRate`, optionally with `startDate` and `endDate`.
      tags:
        - recordings
      parameters:
        - $ref: '#/components/parameters/RecordingHeatSourceIdParameter'
        - $ref: '#/components/parameters/RecordingSampleRate'
        - $ref: '#/components/parameters/RecordingStartDate'
        - $ref: '#/components/parameters/RecordingEndDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/yRecordingExtended'
              examples:
                sampleRateRequest:
                  description: Recording request with sampleRate and optional date bounds.
                  value:
                    id: /recordings/heatSources/hs2/emon/total/workingTime?sampleRate=all&startDate=2025-09-01&endDate=2025-10-30
                    type: yRecordingExtended
                    writeable: 0
                    recordingType: actual
                    unitOfMeasure: s
                    recordedResource:
                      id: /heatSources/hs2/emon/total/workingTime
                      uri: http://192.0.2.10/heatSources/hs2/emon/total/workingTime
                    values:
                      - sampleRate: PT1H
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T23:00:00+02:00'
                        recording:
                          - 'y': 9.25
                            c: 1
                          - 'y': 10.18
                            c: 1
                          - 'y': 9.74
                            c: 1
                      - sampleRate: P1D
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-30T00:00:00+02:00'
                        recording:
                          - 'y': 228.5
                            c: 24
                          - 'y': 251.2
                            c: 24
                      - sampleRate: P1M
                        startTime: '2025-09-01T00:00:00+02:00'
                        endTime: '2025-10-01T00:00:00+02:00'
                        recording:
                          - 'y': 6685.8
                            c: 500
                          - 'y': 7348.6
                            c: 500
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /solarCircuits/{solarCircuitId}/collectorTemperature:
    get:
      operationId: getSolarCircuitsScXCollectorTemperature
      description: Get the collector temperature for the specified solar circuit.
      tags:
        - solar circuits
      parameters:
        - $ref: '#/components/parameters/SolarCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /solarCircuits/sc1/collectorTemperature
                type: floatValue
                writeable: 0
                value: 43.5
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /solarCircuits/{solarCircuitId}/dhwTankBottomTemperature:
    get:
      operationId: getSolarCircuitsScXDhwTankBottomTemperature
      description: Get the domestic hot water tank bottom temperature for the specified solar circuit.
      tags:
        - solar circuits
      parameters:
        - $ref: '#/components/parameters/SolarCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /solarCircuits/sc1/dhwTankBottomTemperature
                type: floatValue
                writeable: 0
                value: 43.5
                unitOfMeasure: C
                state:
                  - open: -32768
                  - short: 32767
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /solarCircuits/{solarCircuitId}/pumpModulation:
    get:
      operationId: getSolarCircuitsScXPumpModulation
      description: Get pump modulation for the specified solar circuit.
      tags:
        - solar circuits
      parameters:
        - $ref: '#/components/parameters/SolarCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /solarCircuits/sc1/pumpModulation
                type: floatValue
                writeable: 0
                value: 0
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /solarCircuits/{solarCircuitId}/solarYield:
    get:
      operationId: getSolarCircuitsScXSolarYield
      description: Get the past-hour gain for the specified solar circuit.
      tags:
        - solar circuits
      parameters:
        - $ref: '#/components/parameters/SolarCircuitIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /solarCircuits/sc1/solarYield
                type: floatValue
                writeable: 0
                value: 6960.5
                unitOfMeasure: wh
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/applianceRunTime:
    get:
      operationId: getVentilationZoneApplianceRunTime
      description: Get the current appliance run time for the ventilation unit.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/applianceRunTime
                type: floatValue
                writeable: 0
                value: 30
                unitOfMeasure: mins
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/elAuxHeaterPower:
    get:
      operationId: getVentilationZoneElAuxHeaterPower
      description: Get the current el.auxiliary heater power for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/elAuxHeaterPower
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/electricalAuxHeaterPower:
    get:
      operationId: getVentilationZoneElectricalAuxHeaterPower
      description: Get the current electrical auxiliary heater power for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/electricalAuxHeaterPower
                type: floatValue
                writeable: 0
                value: 30
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/exhaustFanLevel:
    get:
      operationId: getVentilationZoneExhaustFanLevel
      description: Get the current exhaust fan level for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ReadableResource'
                  - $ref: '#/components/schemas/VentilationExhaustFanLevelValues'
              example:
                id: /ventilation/zone1/exhaustFanLevel
                type: stringValue
                writeable: 0
                value: 'off'
                allowedValues:
                  - 'off'
                  - min
                  - red
                  - nom
                  - max
                  - dem
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/exhaustFanPower:
    get:
      operationId: getVentilationZoneExhaustFanPower
      description: Get the current exhaust fan power for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/exhaustFanPower
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/exhaustFanSpeed:
    get:
      operationId: getVentilationZoneExhaustFanSpeed
      description: Get the current exhaust fan speed for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/exhaustFanSpeed
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: 1/min
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/filter/remainingTime:
    get:
      operationId: getVentilationZoneFilterRemainingTime
      description: Get the remaining filter time for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/filter/remainingTime
                type: floatValue
                writeable: 0
                value: 10
                unitOfMeasure: mins
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/maxIndoorAirQuality:
    get:
      operationId: getVentilationZoneMaxIndoorAirQuality
      description: Get the indoor air quality index for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/maxIndoorAirQuality
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: ppm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/maxRelativeHumidity:
    get:
      operationId: getVentilationZoneMaxRelativeHumidity
      description: Get the relative humidity for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/maxRelativeHumidity
                type: floatValue
                writeable: 0
                value: 100
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/exhaustTemp:
    get:
      operationId: getVentilationZoneSensorsExhaustTemp
      description: Get the current exhaust temperature for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/exhaustTemp
                type: floatValue
                writeable: 0
                value: -32768
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/externalAirQuality:
    get:
      operationId: getVentilationZoneSensorsExternalAirQuality
      description: Get the current external air quality for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/externalAirQuality
                type: floatValue
                writeable: 0
                value: 10
                unitOfMeasure: ppm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/externalHumidity:
    get:
      operationId: getVentilationZoneSensorsExternalHumidity
      description: Get the current external humidity for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/externalHumidity
                type: floatValue
                writeable: 0
                value: 10
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/extractTemp:
    get:
      operationId: getVentilationZoneSensorsExtractTemp
      description: Get the current extract temperature for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/extractTemp
                type: floatValue
                writeable: 0
                value: -32768
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/internalAirQuality:
    get:
      operationId: getVentilationZoneSensorsInternalAirQuality
      description: Get the current internal air quality for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/internalAirQuality
                type: floatValue
                writeable: 0
                value: 10
                unitOfMeasure: ppm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/internalHumidity:
    get:
      operationId: getVentilationZoneSensorsInternalHumidity
      description: Get the current internal humidity for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/internalHumidity
                type: floatValue
                writeable: 0
                value: 50
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/outdoorTemp:
    get:
      operationId: getVentilationZoneSensorsOutdoorTemp
      description: Get the current outdoor temperature for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/outdoorTemp
                type: floatValue
                writeable: 0
                value: -32768
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/supplyFanRotation:
    get:
      operationId: getVentilationZoneSensorsSupplyFanRotation
      description: Get the current supply fan rotation for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/supplyFanRotation
                type: floatValue
                writeable: 0
                value: 200
                unitOfMeasure: rpm"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/sensors/supplyTemp:
    get:
      operationId: getVentilationZoneSensorsSupplyTemp
      description: Get the current supply temperature for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/sensors/supplyTemp
                type: floatValue
                writeable: 0
                value: -32768
                unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/summerBypass/flapPower:
    get:
      operationId: getVentilationZoneSummerBypassFlapPower
      description: Get the current summer bypass flap power for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/summerBypass/flapPower
                type: floatValue
                writeable: 0
                value: 30
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /ventilation/{ventilationZoneId}/supplyFanPower:
    get:
      operationId: getVentilationZoneSupplyFanPower
      description: Get the current supply fan power for the specified ventilation zone.
      tags:
        - ventilation
      parameters:
        - $ref: '#/components/parameters/VentilationZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /ventilation/zone1/supplyFanPower
                type: floatValue
                writeable: 0
                value: 50
                unitOfMeasure: '%'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/averageActualHumidity:
    get:
      operationId: getZoneAverageActualHumidity
      description: Get the current average actual humidity for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /zones/zone1/averageActualHumidity
                writeable: 0
                type: floatValue
                value: 57
                unitOfMeasure: '%'
                state:
                  - overflow: 254
                  - underflow: 253
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/averageCurrentTemperature:
    get:
      operationId: getZoneAverageCurrentTemperature
      description: Get the current average temperature for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
              example:
                id: /zones/zone1/averageCurrentTemperature
                writeable: 0
                type: floatValue
                value: 25.8
                unitOfMeasure: C
                state:
                  - overflow: -32767
                  - underflow: -32766
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/childLock:
    get:
      operationId: getZoneChildLock
      description: Get the status of child lock setting for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - inactive
                          - active
              example:
                id: /zones/zone1/childLock
                writeable: 1
                type: stringValue
                value: inactive
                allowedValues:
                  - inactive
                  - active
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/cooling/manualRoomSetpoint:
    get:
      operationId: getZoneCoolingManualRoomSetpoint
      description: Get the current manual room setpoint for the cooling system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
                example:
                  id: /zones/zone1/cooling/manualRoomSetpoint
                  type: floatValue
                  writeable: 1
                  value: 21.5
                  unitOfMeasure: C
                  minValue: 5
                  maxValue: 30
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/cooling/temporaryRoomSetpoint:
    get:
      operationId: getZoneCoolingTemporaryRoomSetpoint
      description: Get the current temporary room setpoint for the cooling system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
                example:
                  id: /zones/zone1/cooling/temporaryRoomSetpoint
                  type: floatValue
                  writeable: 1
                  value: 21.5
                  unitOfMeasure: C
                  minValue: 5
                  maxValue: 30
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/cooling/operationMode:
    get:
      operationId: getZoneCoolingOperationMode
      description: Get the current operation mode for the cooling system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - auto
                          - manual
                          - 'off'
              example:
                id: /zones/zone1/cooling/operationMode
                type: stringValue
                writeable: 1
                value: 'off'
                allowedValues:
                  - auto
                  - manual
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/currentRoomSetpoint:
    get:
      operationId: getZoneCurrentRoomSetpoint
      description: Get the current room setpoint for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/ReadableResource'
                example:
                  id: /zones/zone1/currentRoomSetpoint
                  type: floatValue
                  writeable: 0
                  value: 10
                  unitOfMeasure: C
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/heating/manualRoomSetpoint:
    get:
      operationId: getZoneHeatingManualRoomSetpoint
      description: Get the current manual room setpoint for the heating system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
                example:
                  id: /zones/zone1/heating/manualRoomSetpoint
                  type: floatValue
                  writeable: 1
                  value: 21.5
                  unitOfMeasure: C
                  minValue: 5
                  maxValue: 30
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/heating/operationMode:
    get:
      operationId: getZoneHeatingOperationMode
      description: Get the current operation mode for the heating system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
                  - type: object
                    properties:
                      value:
                        enum:
                          - auto
                          - manual
                          - 'off'
              example:
                id: /zones/zone1/heating/operationMode
                writeable: 1
                type: stringValue
                value: 'off'
                allowedValues:
                  - auto
                  - manual
                  - 'off'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/heating/temporaryRoomSetpoint:
    get:
      operationId: getZoneHeatingTemporaryRoomSetpoint
      description: Get the current temporary room setpoint for the heating system in the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/FloatValue'
                  - $ref: '#/components/schemas/WriteableResource'
                example:
                  id: /zones/zone1/heating/temporaryRoomSetpoint
                  type: floatValue
                  writeable: 1
                  value: 21.5
                  unitOfMeasure: C
                  minValue: 5
                  maxValue: 30
                  state:
                    - 'off': 0
                    - na: -1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/icon:
    get:
      operationId: getZoneIcon
      description: Get the current icon for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/StringValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /zones/zone1/icon
                writeable: 1
                type: stringValue
                value: KITCHEN
                allowedValues:
                  - KITCHEN
                  - LIVING_ROOM
                  - DINING_ROOM
                  - BED_ROOM
                  - MASTER_ROOM
                  - CHILDRENS_ROOM
                  - BATHROOM
                  - OFFICE
                  - HALLWAY
                  - HOBBY_ROOM
                  - LAUNDRY
                  - LIBRARY
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /zones/{zoneId}/name:
    get:
      operationId: getZoneName
      description: Get the current name for the specified zone.
      tags:
        - zones
      parameters:
        - $ref: '#/components/parameters/ZoneIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/CustomNameStringValue'
                  - $ref: '#/components/schemas/WriteableResource'
              example:
                id: /zones/zone1/name
                type: stringValue
                writeable: 1
                value: AHoAbwBuAGUAIABvAG4AZQ==
                valueConfig:
                  charset: UTF16
                  codingType: base64
                  maxLength: 50
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    BaseResource:
      type: object
      required:
        - id
        - type
        - writeable
      properties:
        id:
          type: string
          readOnly: true
        type:
          type: string
          readOnly: true
        writeable:
          type: integer
          readOnly: true
          enum:
            - 0
            - 1
        recordable:
          type: integer
          readOnly: true
          enum:
            - 0
            - 1
    StringValue:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - stringValue
              readOnly: true
            value:
              type: string
            allowedValues:
              type: array
              items:
                type: string
              readOnly: true
    ReadableResource:
      type: object
      properties:
        writeable:
          type: integer
          enum:
            - 0
          example: 0
    FloatValue:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - floatValue
            value:
              type: number
              format: float
            unitOfMeasure:
              type: string
              readOnly: true
            minValue:
              type: number
              format: float
              readOnly: true
            maxValue:
              type: number
              format: float
              readOnly: true
            state:
              type: array
              readOnly: true
              items:
                type: object
                additionalProperties:
                  type: number
            stepSize:
              type: number
              format: float
              readOnly: true
            valueConfig:
              type: array
              readOnly: true
              items:
                required:
                  - referenceSensor
                properties:
                  referenceSensor:
                    type: string
    WriteableResource:
      type: object
      properties:
        writeable:
          type: integer
          enum:
            - 1
          example: 1
    InclusionWhitelist:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - inclusionWhitelist
              readOnly: true
            value:
              type: array
              items:
                type: object
                required:
                  - assignedHC
                  - actualDevices
                  - maxSupportedDevices
                  - sgtinPattern
                properties:
                  assignedHC:
                    type: string
                  actualDevices:
                    type: integer
                  maxSupportedDevices:
                    type: integer
                  sgtinPattern:
                    type: array
                    items:
                      type: object
                      required:
                        - type
                        - pattern
                      properties:
                        type:
                          type: string
                        pattern:
                          type: string
    StringConfig:
      type: object
      readOnly: true
      required:
        - charset
        - codingType
        - maxLength
      properties:
        charset:
          type: string
        codingType:
          type: string
        maxLength:
          type: integer
    BinaryStringValue:
      allOf:
        - $ref: '#/components/schemas/StringValue'
        - type: object
          properties:
            value:
              type: string
              enum:
                - 'on'
                - 'off'
    CustomNameStringValue:
      allOf:
        - $ref: '#/components/schemas/StringValue'
        - type: object
          required:
            - valueConfig
          properties:
            value:
              type: string
              example: AFAAcgBvAGQAdQBjAHQATgBhAG0AZQ==
            valueConfig:
              $ref: '#/components/schemas/StringConfig'
    Reference:
      type: object
      additionalProperties: false
      required:
        - id
        - uri
      properties:
        id:
          type: string
          readOnly: true
          example: /path/to/resource
        uri:
          type: string
          format: uri
          readOnly: true
          example: http://192.0.2.10/path/to/resource
    IntegerValue:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - integerValue
            value:
              type: integer
            unitOfMeasure:
              type: string
              readOnly: true
            minValue:
              type: integer
              readOnly: true
            maxValue:
              type: integer
              readOnly: true
            stepSize:
              type: integer
              readOnly: true
            state:
              type: array
              readOnly: true
              items:
                type: object
                additionalProperties:
                  type: integer
    TimezoneStringValue:
      allOf:
        - $ref: '#/components/schemas/StringValue'
        - type: object
          properties:
            value:
              type: string
              example: Europe/Berlin
    UpdateStatus:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - updateStatus
            value:
              readOnly: true
              description: Current update state and progress information.
              properties:
                recipeId:
                  description: Unique identifier for the update script/image. In case  of the gateway this field is an empty string
                  type: string
                  example: SYNTHETIC-RECIPE-001
                reciepeId:
                  description: Legacy spelling of the update recipe identifier.
                  type: string
                updateId:
                  description: Random number which identifies the update itself. Regenerated on every update procedure.
                  type: string
                  example: '12536'
                status:
                  type: object
                  properties:
                    value:
                      description: |
                        Current status of the update. Possible values are: - `idle`: The update process is idle (only seen until the first update started) - `start`: The update process has started. - `run`: The update process is running. - `download`: The update is being downloaded. - `in_progress`: The update is in progress. - `success`: The update was successful and system is rebooting. This state will stay until the next update starts. - `failure`: The update failed. This state will stay until the next update starts. - `done`: (Obsolete, kept for backward compatibility)
                      type: string
                      enum:
                        - idle
                        - start
                        - run
                        - download
                        - in_progress
                        - success
                        - failure
                        - done
                    allowedValues:
                      description: Allowed values for update status
                      type: array
                      items:
                        type: string
                      example:
                        - idle
                        - start
                        - run
                        - download
                        - in_progress
                        - success
                        - failure
                        - done
                progress:
                  type: object
                  properties:
                    nsteps:
                      description: Total number of steps in the update
                      type: number
                      example: 2
                      minimum: 0
                    cur_step:
                      description: Current update step (number between 0 and 'nsteps')
                      type: number
                      example: 1
                      minimum: 0
                    cur_percent:
                      description: Progress of current update step in percent
                      type: number
                      example: 90
                      minimum: 0
                      maximum: 100
                    percent:
                      description: Overall progress of the update in percent
                      type: number
                      example: 74
                      minimum: 0
                      maximum: 100
                    cur_stepName:
                      description: Current step name of the update
                      type: string
                      example: HMI
                    cur_stepType:
                      type: object
                      properties:
                        value:
                          description: Current step type/phase of the update
                          type: string
                        allowedValues:
                          description: Allowed values for update step type
                          type: array
                          items:
                            type: string
                          example:
                            - ''
                            - start_update
                            - system_transfer
                            - install
                            - rollback
    UpdateStatusStringValue:
      allOf:
        - $ref: '#/components/schemas/StringValue'
        - type: object
          properties:
            value:
              type: string
              enum:
                - inprogress
                - completed
                - interrupted
    UpdateReport:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - timeStamp
            - recipeId
            - status
            - gatewayId
            - values
          properties:
            type:
              enum:
                - updateReport
            timeStamp:
              type: string
              description: 10-digit Unix timestamp of the creation of the update report
              example: '1708683200'
            recipeId:
              type: string
              description: id of the recipe received by swupdate In case  of the gateway this field is an empty string
              example: SYNTHETIC-RECIPE-001
            status:
              type: string
              description: Overall update status. An empty string indicates that no completed system update report is available.
              enum:
                - ''
                - SUCCESS
                - ERROR
            gatewayId:
              type: string
              description: UUID of the gateway that provided the system update report
              example: '000000001'
            logs:
              type: array
              description: array of log messages with timestamps in milliseconds resolution
              items:
                type: object
                required:
                  - msg
                  - timeStampMs
                properties:
                  msg:
                    type: string
                    description: log message
                    example: pre-inst running
                  timeStampMs:
                    type: string
                    description: 13-digit Unix timestamp of the log message
                    example: '1721825354359'
            values:
              type: array
              description: array containing the generated module reports
              items:
                type: object
                required:
                  - moduleId
                  - status
                  - timeStamp
                properties:
                  moduleId:
                    oneOf:
                      - type: string
                      - type: number
                    description: serial number of the updated appliance (e.g. XCU, HMI)
                    example: '00000000000000000000001'
                  distributionSetId:
                    type: string
                    description: id of the set of images applied by the system update
                    example: '0000000'
                  status:
                    type: string
                    description: status of the attempted module update
                    enum:
                      - SUCCESS
                      - ERROR
                      - CANCELLED
                  previousSwVersion:
                    type: string
                    description: string identification of the software installed on a module before the system update. Only offered in system update.
                    example: 4.0.0-charlie
                  statusCode:
                    type: number
                    minimum: 0
                    description: status code corresponding to the error occurred, zero means OK
                    example: 0
                  timeStamp:
                    type: string
                    description: 10-digit Unix timestamp of the creation time of the module report
                    example: '1721825354'
                  logs:
                    type: array
                    description: log messages written during the module's update attempt
                    items:
                      type: object
                      properties:
                        msg:
                          type: string
                          description: log message
                          example: started image activation
                        timeStampMs:
                          type: string
                          description: 13-digit Unix timestamp of the log message
                          example: '1721825354359'
    ApList:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - apList
            values:
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                  - ssid
                  - strength
                  - secType
                properties:
                  ssid:
                    description: Base64-encoded SSID.
                    type: string
                    example: RGVtb05ldHdvcms=
                  strength:
                    type: string
                    example: '-59'
                  secType:
                    type: string
                    example: WPA2
      example:
        id: /gateway/wifi/apList
        writeable: 0
        type: apList
        values:
          - ssid: RGVtb05ldHdvcms=
            strength: '-59'
            secType: WPA2
          - ssid: RGVtb05ldHdvcmsy
            strength: '-29'
            secType: WEP
    WifiPairingStatus:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - value
          properties:
            type:
              enum:
                - stringValue
              readOnly: true
            value:
              oneOf:
                - type: boolean
                - type: string
            allowedValues:
              type: array
              items:
                oneOf:
                  - type: boolean
                  - type: string
              readOnly: true
    ArrayData:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - arrayData
            values:
              type: array
              items:
                type: string
            allowedValues:
              type: array
              items:
                type: string
              readOnly: true
      example:
        id: /heatSources/actualHeatDemand
        writeable: 0
        type: arrayData
        values:
          - ch
          - dhw
        allowedValues:
          - ch
          - dhw
          - frost
    EmonValue:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - emonValue
            unit:
              type: string
            values:
              type: array
              items:
                type: object
                maxProperties: 1
                properties:
                  outputProduced:
                    type: number
                  eheater:
                    type: number
                  compressor:
                    type: number
                  solar:
                    type: number
                  burner:
                    type: number
                  electricity:
                    type: number
                  ventilation:
                    type: number
                  ventilationHeatRecovered:
                    type: number
                  ch:
                    type: number
                  dhw:
                    type: number
                  pool:
                    type: number
                  cooling:
                    type: number
                  total:
                    type: number
    ConfigData:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - configData
            values:
              type: object
              readOnly: true
      example:
        id: /holidayMode/configuration
        type: configData
        writeable: 0
        values:
          date:
            type: date
            allowedValues:
              - date
              - dateTime
          heatingMode:
            type: arrayData
            allowedValues:
              - SATURDAY
              - FIX_TEMPERATURE
              - 'OFF'
              - ECO
          dhwMode:
            type: arrayData
            allowedValues:
              - SATURDAY
              - 'OFF'
              - ECO
              - LOW
              - HIGH
              - OFF_TD
          ventilationMode:
            type: arrayData
            allowedValues:
              - SATURDAY
              - 'OFF'
              - MIN
              - RED
              - NOM
              - MAX
              - DEM
          assignedTo:
            type: arrayData
            allowedValues:
              - hc1
              - hc2
              - hc3
              - hc4
              - dhw1
              - dhw2
              - vent1
              - vent2
              - vent3
              - vent4
          thermalDesinfection:
            type: stringValue
            allowedValues:
              - 'OFF'
              - 'ON'
          name:
            type: stringValue
            stringConfig:
              charset: UTF16
              codingType: base64
              maxLength: 49
          fixTemperature:
            type: floatValue
            minValue: 15
            maxValue: 60
    ErrorList:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - errorList
            values:
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                  - dcd
                  - ccd
                  - orig
                  - dlv
                  - fc
                properties:
                  dcd:
                    type: string
                  ccd:
                    type: number
                  orig:
                    type: string
                  dlv:
                    type: string
                  fc:
                    type: string
      example:
        id: /notifications
        writeable: 0
        type: errorList
        values:
          - dcd: 4U
            ccd: 521
            orig: '8'
            dlv: '8'
            fc: '4'
    RecordingSampleRate:
      type: string
      description: Requested sample-rate token. Values are exact and case-sensitive.
      enum:
        - PT1H
        - P1D
        - P1M
        - all
      example: PT1H
    RecordingStartDate:
      type: string
      format: date
      example: '2020-12-24'
      description: Start date for the requested recording period.
    RecordingEndDate:
      type: string
      format: date
      example: '2020-12-24'
      description: End date for the requested recording period.
    yRecordingExtended:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - recordedResource
            - recordingType
            - values
          properties:
            type:
              enum:
                - yRecordingExtended
            unitOfMeasure:
              type: string
            recordedResource:
              type: object
              required:
                - id
                - uri
              properties:
                id:
                  type: string
                uri:
                  type: string
                  format: uri
            recordingType:
              type: string
              enum:
                - actual
            values:
              type: array
              items:
                type: object
                required:
                  - sampleRate
                  - startTime
                  - endTime
                  - recording
                properties:
                  sampleRate:
                    type: string
                    description: Aggregation period used for this group. `PT1H` is hourly, `P1D` is daily, and `P1M` is monthly.
                    enum:
                      - PT1H
                      - P1D
                      - P1M
                  startTime:
                    type: string
                    format: date-time
                    example: '2025-09-30T00:00:00+02:00'
                    description: ISO 8601 datetime with time-zone offset.
                  endTime:
                    type: string
                    format: date-time
                    example: '2025-10-30T00:00:00+02:00'
                    description: ISO 8601 datetime with time-zone offset.
                  recording:
                    type: array
                    items:
                      type: object
                      required:
                        - 'y'
                        - c
                      properties:
                        'y':
                          type: number
                          description: Recorded yield value for the sample.
                        c:
                          type: number
                          description: Number of source samples represented by the recorded value.
    RefEnum:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - references
          properties:
            type:
              enum:
                - refEnum
            references:
              type: array
              items:
                $ref: '#/components/schemas/Reference'
    SystemBasicInfo:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - status
            - timeStamp
            - gatewayId
            - values
          properties:
            type:
              enum:
                - systeminfo
            status:
              type: string
              example: completed
            timeStamp:
              type: string
              pattern: ^(?:\d{10})?$
            gatewayId:
              type: string
              example: '000000001'
            values:
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                  - Tok
                  - Id
                  - Ver
                  - ModuleSerialNumber
                  - ModuleHwIdentStr
                properties:
                  Tok:
                    type: string
                    example: '8'
                  Id:
                    type: string
                    example: '172'
                  Ver:
                    type: string
                    example: '31.02'
                  ModuleSerialNumber:
                    oneOf:
                      - type: string
                      - type: number
                    example: '00000000000000000000001'
                  ProductSerialNumber:
                    type: string
                    example: '000000000000000000000000000000001'
                  ModuleHwIdentStr:
                    type: string
                    example: ''
                  ProductName:
                    type: string
                    example: Compress CS6800iAW 12 E
      example:
        id: /system/basicInfo
        type: systeminfo
        writeable: 0
        status: completed
        timeStamp: '1684201667'
        gatewayId: '000000001'
        values:
          - Tok: '8'
            Id: '8'
            Ver: 23.06.02-5.33-d510f849
            ProductName: Compress CS6800iAW 12 E
            ModuleSerialNumber: '00000000000000000000001'
            ProductSerialNumber: '000000000000000000000000000000001'
            ModuleHwIdentStr: XCU_THH
          - Tok: '8'
            Id: '65281'
            Ver: 3.06.02-5.33-d510f849
            ProductName: AW 4 OR-S
            ModuleSerialNumber: '00000000000000000000002'
            ProductSerialNumber: '000000000000000000000000000000002'
            ModuleHwIdentStr: XCU_SRH
          - Tok: '72'
            Id: '17'
            Ver: 10.02.00
            ModuleSerialNumber: '00000000000000000000003'
            ModuleHwIdentStr: K40RF
    DeviceErrors:
      allOf:
        - $ref: '#/components/schemas/BaseResource'
        - type: object
          required:
            - values
          properties:
            type:
              enum:
                - deviceErrors
            values:
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                  - errorType
                  - occurrenceId
                  - value
                  - allowedValues
                properties:
                  errorType:
                    type: string
                  occurrenceId:
                    type: number
                  value:
                    type: string
                  allowedValues:
                    type: array
                    items:
                      type: string
      example:
        id: /devices/device1/errors
        type: deviceErrors
        writeable: 0
        values:
          - errorType: roomNotReachingSetP
            occurrenceId: 123
            value: active
            allowedValues:
              - inactive
              - active
          - errorType: coolingStopped
            occurrenceId: 123
            value: active
            allowedValues:
              - inactive
              - active
          - errorType: connectionLost60min
            occurrenceId: 123
            value: active
            allowedValues:
              - inactive
              - active
    VentilationExhaustFanLevelValues:
      allOf:
        - $ref: '#/components/schemas/StringValue'
        - type: object
          properties:
            value:
              type: string
              enum:
                - 'off'
                - min
                - red
                - nom
                - max
                - dem
            allowedValues:
              type: array
              items:
                type: string
              example:
                - 'off'
                - min
                - red
                - nom
                - max
                - dem
  parameters:
    DeviceIdParameter:
      in: path
      name: deviceId
      description: Paired device ID.
      schema:
        type: string
        enum:
          - device1
          - device2
          - device3
          - device4
          - device5
          - device6
          - device7
          - device8
          - device9
          - device10
          - device11
          - device12
          - device13
          - device14
          - device15
          - device16
          - device17
          - device18
          - device19
          - device20
          - device21
          - device22
          - device23
          - device24
          - device25
          - device26
          - device27
          - device28
          - device29
          - device30
          - device31
          - device32
      required: true
    DhwCircuitIdParameter:
      in: path
      name: dhwCircuitId
      description: Domestic hot water circuit ID.
      schema:
        type: string
        enum:
          - dhw1
          - dhw2
      required: true
    HeatingCircuitIdParameter:
      in: path
      name: heatingCircuitId
      description: Heating circuit ID.
      schema:
        type: string
        enum:
          - hc1
          - hc2
          - hc3
          - hc4
      required: true
    RecordingSampleRate:
      in: query
      name: sampleRate
      description: Required sample rate for the recording request. Optionally supply startDate, endDate, or both.
      required: true
      schema:
        $ref: '#/components/schemas/RecordingSampleRate'
    RecordingStartDate:
      in: query
      name: startDate
      description: Optional start date for the recording request. Use with sampleRate and optional endDate.
      required: false
      schema:
        $ref: '#/components/schemas/RecordingStartDate'
    RecordingEndDate:
      in: query
      name: endDate
      description: Optional end date for the recording request. Use with sampleRate and optional startDate.
      required: false
      schema:
        $ref: '#/components/schemas/RecordingEndDate'
    SignalIdParameter:
      in: path
      name: signalId
      required: true
      description: Signal ID returned by GET /signals. The available IDs are dynamic and depend on the connected system.
      schema:
        type: string
      example: SRC.RelativeTime
    VentilationZoneIdParameter:
      in: path
      name: ventilationZoneId
      description: Ventilation zone ID.
      schema:
        type: string
        enum:
          - zone1
      required: true
    ZoneIdParameter:
      in: path
      name: zoneId
      description: Heating zone ID.
      schema:
        type: string
        enum:
          - zone1
          - zone2
          - zone3
          - zone4
          - zone5
          - zone6
          - zone7
          - zone8
          - zone9
          - zone10
          - zone11
          - zone12
          - zone13
          - zone14
          - zone15
          - zone16
      required: true
    HeatSourceIdParameter:
      in: path
      name: heatSourceId
      description: Heat source ID.
      schema:
        type: string
        enum:
          - hs1
          - hs2
          - hs3
          - hs4
          - hs5
          - hs6
      required: true
    RecordingHeatSourceIdParameter:
      in: path
      name: heatSourceId
      description: Recording heat source ID.
      schema:
        type: string
        enum:
          - hs2
          - hs3
          - hs4
          - hs5
          - hs6
      required: true
    SolarCircuitIdParameter:
      in: path
      name: solarCircuitId
      description: Solar circuit ID.
      required: true
      schema:
        type: string
        enum:
          - sc1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Access token created through the gateway authentication service on port 9442.
  responses:
    BadRequest:
      description: The request is invalid or malformed.
    Unauthorized:
      description: Authentication is required or the provided credentials are invalid.
    Forbidden:
      description: The authenticated client is not authorized to perform the request.
    NotFound:
      description: The requested resource could not be found.
    InternalServerError:
      description: An unexpected error occurred while processing the request.
