> ## Documentation index
> Fetch the complete documentation index at: https://developer.rhombus.com/llms.txt
> Use it to discover all available pages before exploring further.

# Get environmental gateway shadows

> Get list of shadows of all environmental gateways of an org

```http
POST https://api2.rhombussystems.com/api/climate/getEnvironmentalGatewayShadows
```

EU organizations send the same request to `https://api2.eu.rhombussystems.com`.

## Authentication and parameters

- `x-auth-apikey` (header, required): Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
- `Authorization` (header): instead of an API key, an OAuth access token (`Bearer <token>`) with the `read` scope.
- `x-auth-scheme` (header, string, default: `api-token`): Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters. One of: `api-token`, `api`, `api-oauth-token`, `federated-token`, `partner-api-token`, `partner-api`, `partner-api-oauth-token`.
- `x-auth-org` (header, string<RUUID>): Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`.

## Request body

Content type: `application/json`. Request to retrieve environmental gateway shadows.

No fields: send `{}`.

## Response 200

OK. Content type: `application/json`

- `environmentalGatewayShadows` (array<object> | null): List of environmental gateway shadows
- `error` (boolean | null)
- `errorCode` (string | null): Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
- `errorMsg` (string | null)
- `warningMsg` (string | null)

## Errors

Also 400, 401, 403, 429, 500, 503 with the standard error body (`errorCode`, `errorMsg`): https://developer.rhombus.com/errors

## OpenAPI

````yaml
openapi: 3.0.1
info:
  title: Rhombus API
  version: "1.0"
servers:
  - description: Production Server
    url: https://api2.rhombussystems.com
security:
  - ApiKeyAuth: []
paths:
  /api/climate/getEnvironmentalGatewayShadows:
    post:
      description: Get list of shadows of all environmental gateways of an org
      operationId: getEnvironmentalGatewayShadows
      parameters:
        - description: "Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters."
          example: api-token
          in: header
          name: x-auth-scheme
          required: false
          schema:
            default: api-token
            enum:
              - api-token
              - api
              - api-oauth-token
              - federated-token
              - partner-api-token
              - partner-api
              - partner-api-oauth-token
            type: string
        - description: "Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`."
          in: header
          name: x-auth-org
          required: false
          schema:
            format: RUUID
            maxLength: 22
            minLength: 22
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Climate_GetEnvironmentalGatewayShadowsWSRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Climate_GetEnvironmentalGatewayShadowsWSResponse"
          description: OK
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
        - ApiKeyAuth: []
        - oauth2:
            - read
      summary: Get environmental gateway shadows
      tags:
        - Climate Webservice
components:
  schemas:
    Climate_GetEnvironmentalGatewayShadowsWSRequest:
      description: Request to retrieve environmental gateway shadows.
      type: object
    Climate_GetEnvironmentalGatewayShadowsWSResponse:
      description: Response containing environmental gateway shadows.
      properties:
        environmentalGatewayShadows:
          description: List of environmental gateway shadows
          items:
            $ref: "#/components/schemas/EnvironmentalGatewayShadowType"
          nullable: true
          type: array
        error:
          nullable: true
          type: boolean
        errorCode:
          description: Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
          nullable: true
          type: string
        errorMsg:
          nullable: true
          type: string
        warningMsg:
          nullable: true
          type: string
      type: object
    EnvironmentalGatewayShadowType:
      description: List of environmental gateway shadows
      properties:
        activeAlertTriggers:
          additionalProperties:
            format: int64
            nullable: true
            type: integer
          nullable: true
          type: object
        apMac:
          nullable: true
          type: string
        carbonMonoSense:
          $ref: "#/components/schemas/COSensorType"
        co2Sense:
          $ref: "#/components/schemas/Co2SensorType"
        connected:
          nullable: true
          type: boolean
        connectionTimestampMs:
          format: int64
          nullable: true
          type: integer
        connectionUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        defaultInterface:
          nullable: true
          type: string
        defaultInterfaceMac:
          nullable: true
          type: string
        derivedValues:
          $ref: "#/components/schemas/E50DerivedValuesType"
        deviceUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        disconnectTimestampMs:
          format: int64
          nullable: true
          type: integer
        externalIPAddress:
          nullable: true
          type: string
        firmwareUpdateInProgress:
          nullable: true
          type: boolean
        firmwareUpdateTimeMs:
          format: int64
          nullable: true
          type: integer
        firmwareVersion:
          nullable: true
          type: string
        formaSense:
          $ref: "#/components/schemas/FormaSensorType"
        hardwareUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        internalWanAddress:
          nullable: true
          type: string
        jumpHostUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        lanAddresses:
          items:
            nullable: true
            type: string
          nullable: true
          type: array
        leakProbe:
          $ref: "#/components/schemas/LeakProbeType"
        orgUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        pmSense:
          $ref: "#/components/schemas/PmSensorType"
        pressSense:
          $ref: "#/components/schemas/PressureSensorType"
        prevConnected:
          nullable: true
          type: boolean
        prevConnectedUpdateTimestampMs:
          format: int64
          nullable: true
          type: integer
        region:
          nullable: true
          type: string
        secondaryLanAddresses:
          items:
            nullable: true
            type: string
          nullable: true
          type: array
        ssid:
          nullable: true
          type: string
        state:
          additionalProperties:
            nullable: true
            type: object
          nullable: true
          type: object
        stateUpdatedTimestampMs:
          format: int64
          nullable: true
          type: integer
        tempProbe:
          $ref: "#/components/schemas/TempProbeType"
        timestampMs:
          format: int64
          nullable: true
          type: integer
        type:
          $ref: "#/components/schemas/DeviceTypeEnum"
        wanAddress:
          nullable: true
          type: string
        wifiSignalStrength:
          format: int32
          nullable: true
          type: integer
      type: object
    COSensorType:
      properties:
        adcRaw:
          format: int32
          nullable: true
          type: integer
        adcVoltage:
          format: double
          nullable: true
          type: number
        coConcentration:
          format: double
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    Co2SensorType:
      properties:
        co2Ppm:
          format: int32
          nullable: true
          type: integer
        relHumid:
          format: float
          nullable: true
          type: number
        tempC:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    E50DerivedValuesType:
      properties:
        airQualityIndex:
          format: int32
          nullable: true
          type: integer
        airQualityIndexPollutant:
          $ref: "#/components/schemas/AirQualityIndexPollutantEnum"
        calibrating:
          nullable: true
          type: boolean
        deviceOrientation:
          $ref: "#/components/schemas/DeviceOrientationEnum"
        falsePositiveConfidencePercent:
          format: float
          nullable: true
          type: number
        heatIndexDegF:
          format: double
          nullable: true
          type: number
        heatIndexRangeWarning:
          $ref: "#/components/schemas/HeatIndexRangeWarningEnum"
        indoorAirQuality:
          format: float
          nullable: true
          type: number
        malfunctioningModules:
          items:
            nullable: true
            type: string
          nullable: true
          type: array
        smokeConfidencePercent:
          format: float
          nullable: true
          type: number
        smokeThcConfidencePercent:
          format: float
          nullable: true
          type: number
        smokeTobaccoConfidencePercent:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
        tvoc:
          format: float
          nullable: true
          type: number
        vapeConfidencePercent:
          format: float
          nullable: true
          type: number
        vapeDetected:
          nullable: true
          type: boolean
        vapeThcConfidencePercent:
          format: float
          nullable: true
          type: number
      type: object
    AirQualityIndexPollutantEnum:
      description: Primary pollutant affecting air quality index
      enum:
        - OZONE
        - PM2P5
        - PM10P0
        - CO
        - NO2
        - SO2
        - UNKNOWN
      type: string
    DeviceOrientationEnum:
      enum:
        - CEILING
        - FLOOR
        - WALL
        - WALL_CROOKED
        - INDETERMINATE
      type: string
    HeatIndexRangeWarningEnum:
      description: Heat index range warning status
      enum:
        - HEAT_INDEX_OK
        - HEAT_INDEX_WARNING
        - HEAT_INDEX_UNSUPPORTED
      type: string
    FormaSensorType:
      properties:
        ch2oPpb:
          format: float
          nullable: true
          type: number
        relHumid:
          format: float
          nullable: true
          type: number
        tempC:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    LeakProbeType:
      properties:
        adcMv:
          format: float
          nullable: true
          type: number
        adcRaw:
          format: int64
          nullable: true
          type: integer
        leakDetected:
          nullable: true
          type: boolean
        moistDetected:
          nullable: true
          type: boolean
        present:
          nullable: true
          type: boolean
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    PmSensorType:
      properties:
        nc0p5:
          format: float
          nullable: true
          type: number
        nc10p0:
          format: float
          nullable: true
          type: number
        nc1p0:
          format: float
          nullable: true
          type: number
        nc2p5:
          format: float
          nullable: true
          type: number
        nc4p0:
          format: float
          nullable: true
          type: number
        noxIdx:
          format: float
          nullable: true
          type: number
        pm10p0:
          format: float
          nullable: true
          type: number
        pm1p0:
          format: float
          nullable: true
          type: number
        pm2p5:
          format: float
          nullable: true
          type: number
        pm4p0:
          format: float
          nullable: true
          type: number
        relHumid:
          format: float
          nullable: true
          type: number
        tempC:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
        typPartSize:
          format: float
          nullable: true
          type: number
        vocIdx:
          format: float
          nullable: true
          type: number
      type: object
    PressureSensorType:
      properties:
        pressure:
          format: float
          nullable: true
          type: number
        tempC:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    TempProbeType:
      properties:
        adcMv:
          format: float
          nullable: true
          type: number
        adcRaw:
          format: int64
          nullable: true
          type: integer
        present:
          nullable: true
          type: boolean
        tempC:
          format: float
          nullable: true
          type: number
        timestampSec:
          format: int64
          nullable: true
          type: integer
      type: object
    DeviceTypeEnum:
      enum:
        - BLE_TRACKER
        - CAMERA
        - DOOR_SENSOR
        - ENVIRONMENTAL_SENSOR
        - OCCUPANCY_SENSOR
        - AUDIO_GATEWAY
        - EXECUTABLE
        - BADGE_READER
        - DOOR_CONTROLLER
        - BLE_BUTTON
        - IO_BOARD
        - ENVIRONMENTAL_GATEWAY
        - NVR
        - ROBOT
        - UNKNOWN
      type: string
  securitySchemes:
    ApiKeyAuth:
      description: Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
      in: header
      name: x-auth-apikey
      type: apiKey
    oauth2:
      description: 'OAuth 2.0 authorization code flow with PKCE (`S256`). Send the access token as `Authorization: Bearer <token>`. Each operation lists the scopes it requires; a token without them is refused 403 with `WWW-Authenticate: Bearer error="insufficient_scope"`.'
      flows:
        authorizationCode:
          authorizationUrl: https://console.rhombus.com/oauth/authorize
          refreshUrl: https://auth-web.rhombussystems.com/oauth/token
          scopes:
            physical: Unlock doors and elevators, lockdown, alarms, speakers and robots
            read: View cameras, footage and settings
            write: Change settings and data
          tokenUrl: https://auth-web.rhombussystems.com/oauth/token
      type: oauth2
````
