> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seam.co/llms.txt
> Use this file to discover all available pages before exploring further.

# The Device Object

> Learn how the device object represents a smart lock, thermostat, sensor, or other device connected to Seam, including its properties and events.

## The device Object

Represents a [device](/core-concepts/devices) that has been connected to Seam.

<ResponseExample>
  ```json Lock Device theme={null}
  {
    "can_program_online_access_codes": true,
    "can_remotely_lock": true,
    "can_remotely_unlock": true,
    "capabilities_supported": [
      "access_code",
      "lock"
    ],
    "connected_account_id": "8e3a4f1b-2c7d-4a9e-8b5f-3d2c1a0b9e8f",
    "created_at": "2025-03-27T02:08:16.418Z",
    "space_ids": [],
    "custom_metadata": {
      "id": "internalId1"
    },
    "device_id": "a69569e1-133b-4a9d-b883-018641bfe543",
    "device_type": "schlage_lock",
    "display_name": "FRONT DOOR",
    "errors": [],
    "is_managed": true,
    "location": {
      "location_name": "Front Door",
      "timezone": "America/New_York"
    },
    "nickname": "Front Door",
    "properties": {
      "appearance": {
        "name": "FRONT DOOR"
      },
      "battery": {
        "level": 0.48,
        "status": "good"
      },
      "battery_level": 0.48,
      "code_constraints": [
        {
          "constraint_type": "name_length",
          "max_length": 9
        }
      ],
      "has_native_entry_events": true,
      "image_alt_text": "Schlage Sense Smart Deadbolt with Camelot Trim, Front",
      "image_url": "https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128",
      "locked": false,
      "manufacturer": "schlage",
      "model": {
        "accessory_keypad_supported": false,
        "can_connect_accessory_keypad": false,
        "display_name": "Encode",
        "has_built_in_keypad": true,
        "manufacturer_display_name": "Schlage",
        "offline_access_codes_supported": false,
        "online_access_codes_supported": true
      },
      "name": "FRONT DOOR",
      "offline_access_codes_enabled": false,
      "online": true,
      "online_access_codes_enabled": true,
      "schlage_metadata": {
        "device_id": "a69569e1-133b-4a9d-b883-018641bfe543",
        "device_name": "FRONT DOOR",
        "model": "Encode"
      },
      "serial_number": "34000000000531e0",
      "supported_code_lengths": [
        4,
        5,
        6,
        7,
        8
      ],
      "supports_backup_access_code_pool": true,
      "supports_offline_access_codes": false
    },
    "warnings": [],
    "workspace_id": "5d7f2e1a-9c8b-4f3e-8d2c-1a0b9e8f7c6d"
  }
  ```

  ```json Noise Sensor Device theme={null}
  {
    "capabilities_supported": [
      "noise_detection"
    ],
    "connected_account_id": "9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d",
    "created_at": "2025-05-16T16:54:17.946049Z",
    "custom_metadata": {
      "id": "internalId1"
    },
    "device_id": "f1e2d3c4-b5a6-4d7c-8e9f-0a1b2c3d4e5f",
    "device_type": "minut_sensor",
    "display_name": "Living Room",
    "errors": [],
    "is_managed": true,
    "space_ids": [],
    "location": {
      "location_name": "Jane's Test Home",
      "timezone": "America/Los_Angeles"
    },
    "nickname": "Living Room",
    "properties": {
      "appearance": {
        "name": "Living Room"
      },
      "battery": {
        "level": 1,
        "status": "full"
      },
      "battery_level": 1,
      "currently_triggering_noise_threshold_ids": [],
      "image_alt_text": "Minut Sensor",
      "image_url": "https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/minut_gen-3_front.png&q=75&w=128",
      "manufacturer": "minut",
      "minut_metadata": {
        "device_id": "770cd3153deca3dee0fe0614",
        "device_location": {
          "latitude": 0,
          "longitude": 0
        },
        "device_name": "Living Room",
        "home_address": {
          "city": "San Francisco",
          "country": "US",
          "notes": "string",
          "post_code": "44210",
          "region": "San Francisco County",
          "street_name1": "2258 24th Street",
          "street_name2": ""
        },
        "home_id": "2978b6d5dba395ec08300e46",
        "home_location": {
          "latitude": 0,
          "longitude": 0
        },
        "home_name": "Jane's Test Home",
        "latest_sensor_values": {
          "accelerometer_z": {
            "time": "2025-06-16T16:54:17.946049Z",
            "value": -1.00390625
          },
          "humidity": {
            "time": "2025-06-16T16:54:17.946049Z",
            "value": 31.110000610351562
          },
          "pressure": {
            "time": "2025-06-16T16:54:17.946049Z",
            "value": 101923
          },
          "sound": {
            "time": "2025-06-16T16:54:17.946049Z",
            "value": 47.7117919921875
          },
          "temperature": {
            "time": "2025-06-16T16:54:17.946049Z",
            "value": 21.270000457763672
          }
        }
      },
      "model": {
        "display_name": "Noise Sensor",
        "manufacturer_display_name": "Minut"
      },
      "name": "Living Room",
      "noise_level_decibels": 47.7117919921875,
      "online": true
    },
    "warnings": [],
    "workspace_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
  }
  ```

  ```json Thermostat Device theme={null}
  {
    "can_hvac_cool": true,
    "can_hvac_heat": true,
    "can_hvac_heat_cool": true,
    "can_turn_off_hvac": true,
    "capabilities_supported": [
      "thermostat"
    ],
    "connected_account_id": "a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d",
    "created_at": "2024-10-03T22:12:15.666Z",
    "custom_metadata": {
      "id": "internalId1"
    },
    "device_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
    "device_type": "ecobee_thermostat",
    "display_name": "Living Room",
    "errors": [],
    "is_managed": true,
    "space_ids": [],
    "location": {
      "location_name": "2948 20th St, San Francisco, CA, 94110, US",
      "timezone": "America/Los_Angeles"
    },
    "nickname": "Living Room",
    "properties": {
      "active_climate_preset": {
        "can_delete": true,
        "can_edit": true,
        "climate_preset_key": "sleep",
        "cooling_set_point_celsius": 23.88888888888889,
        "display_name": "Sleep",
        "fan_mode_setting": "auto",
        "heating_set_point_celsius": 17.77777777777778,
        "hvac_mode_setting": "heat_cool",
        "manual_override_allowed": true
      },
      "appearance": {
        "name": "Living Room"
      },
      "available_climate_presets": [
        {
          "climate_preset_key": "sleep",
          "can_edit": true,
          "can_delete": true,
          "can_use_with_thermostat_daily_programs": false,
          "name": "Sleep",
          "display_name": "Sleep",
          "fan_mode_setting": "auto",
          "hvac_mode_setting": "heat_cool",
          "manual_override_allowed": true,
          "cooling_set_point_celsius": 23.88888888888889,
          "heating_set_point_celsius": 17.77777777777778,
          "cooling_set_point_fahrenheit": 75,
          "heating_set_point_fahrenheit": 64
        },
        {
          "climate_preset_key": "home",
          "can_edit": true,
          "can_delete": true,
          "can_use_with_thermostat_daily_programs": false,
          "name": "Home",
          "display_name": "Home",
          "fan_mode_setting": "auto",
          "hvac_mode_setting": "heat_cool",
          "manual_override_allowed": false,
          "cooling_set_point_celsius": 23.88888888888889,
          "heating_set_point_celsius": 17.77777777777778,
          "cooling_set_point_fahrenheit": 75,
          "heating_set_point_fahrenheit": 64
        },
        {
          "climate_preset_key": "work",
          "can_edit": true,
          "can_delete": true,
          "can_use_with_thermostat_daily_programs": false,
          "name": "Work",
          "display_name": "Work",
          "fan_mode_setting": "auto",
          "hvac_mode_setting": "heat_cool",
          "manual_override_allowed": false,
          "cooling_set_point_celsius": 23.88888888888889,
          "heating_set_point_celsius": 17.77777777777778,
          "cooling_set_point_fahrenheit": 75,
          "heating_set_point_fahrenheit": 64
        }
      ],
      "available_fan_mode_settings": [
        "auto",
        "on"
      ],
      "available_hvac_mode_settings": [
        "cool",
        "heat",
        "heat_cool",
        "off"
      ],
      "current_climate_setting": {
        "display_name": "Manual Setting",
        "fan_mode_setting": "auto",
        "heating_set_point_celsius": 25,
        "heating_set_point_fahrenheit": 77,
        "hvac_mode_setting": "heat",
        "manual_override_allowed": true
      },
      "ecobee_metadata": {
        "device_name": "Living Room",
        "ecobee_device_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0"
      },
      "fallback_climate_preset_key": "eco",
      "fan_mode_setting": "auto",
      "has_direct_power": true,
      "image_alt_text": "Ecobee 3 Lite Thermostat",
      "image_url": "https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128",
      "is_cooling": false,
      "is_fan_running": false,
      "is_heating": false,
      "is_temporary_manual_override_active": false,
      "manufacturer": "ecobee",
      "max_cooling_set_point_celsius": 33.333333333333336,
      "max_cooling_set_point_fahrenheit": 92,
      "max_heating_set_point_celsius": 26.11111111111111,
      "max_heating_set_point_fahrenheit": 79,
      "min_cooling_set_point_celsius": 18.333333333333336,
      "min_cooling_set_point_fahrenheit": 65,
      "min_heating_cooling_delta_celsius": 2.7777777777777777,
      "min_heating_cooling_delta_fahrenheit": 5,
      "min_heating_set_point_celsius": 7.222222222222222,
      "min_heating_set_point_fahrenheit": 45,
      "model": {
        "display_name": "Thermostat",
        "manufacturer_display_name": "Ecobee"
      },
      "name": "Living Room",
      "online": true,
      "relative_humidity": 0.36,
      "temperature_celsius": 21.11111111111111,
      "temperature_fahrenheit": 70,
      "temperature_threshold": {
        "lower_limit_celsius": 16.66666666666667,
        "lower_limit_fahrenheit": 62,
        "upper_limit_celsius": 26.66666666666667,
        "upper_limit_fahrenheit": 80
      },
      "thermostat_daily_programs": [
        {
          "thermostat_daily_program_id": "1a2b3c4d-5e6f-7890-1234-56789abcdef1",
          "device_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
          "name": "Weekday Program",
          "periods": [
            {
              "starts_at_time": "00:00:00",
              "climate_preset_key": "sleep"
            },
            {
              "starts_at_time": "07:00:00",
              "climate_preset_key": "home"
            },
            {
              "starts_at_time": "09:00:00",
              "climate_preset_key": "work"
            },
            {
              "starts_at_time": "18:00:00",
              "climate_preset_key": "home"
            },
            {
              "starts_at_time": "22:00:00",
              "climate_preset_key": "sleep"
            }
          ],
          "workspace_id": "9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab",
          "created_at": "2025-05-30T04:01:25.455Z"
        },
        {
          "thermostat_daily_program_id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90",
          "device_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
          "name": "Weekend Program",
          "periods": [
            {
              "starts_at_time": "00:00:00",
              "climate_preset_key": "sleep"
            },
            {
              "starts_at_time": "08:00:00",
              "climate_preset_key": "home"
            },
            {
              "starts_at_time": "23:00:00",
              "climate_preset_key": "sleep"
            }
          ],
          "workspace_id": "9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab",
          "created_at": "2025-05-30T04:02:19.952Z"
        }
      ],
      "thermostat_weekly_program": null
    },
    "warnings": [],
    "workspace_id": "9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab"
  }
  ```
</ResponseExample>

***

## Properties

<ResponseField name="can_configure_auto_lock" type="Boolean">
  Indicates whether the lock supports configuring automatic locking.
</ResponseField>

<ResponseField name="can_hvac_cool" type="Boolean">
  Indicates whether the thermostat supports cooling.
</ResponseField>

<ResponseField name="can_hvac_heat" type="Boolean">
  Indicates whether the thermostat supports heating.
</ResponseField>

<ResponseField name="can_hvac_heat_cool" type="Boolean">
  Indicates whether the thermostat supports simultaneous heating and cooling.
</ResponseField>

<ResponseField name="can_program_offline_access_codes" type="Boolean">
  Indicates whether the device supports programming offline access codes.
</ResponseField>

<ResponseField name="can_program_online_access_codes" type="Boolean">
  Indicates whether the device supports programming online access codes.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_different_each_day" type="Boolean">
  Indicates whether the thermostat supports different climate programs for each day of the week.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_same_each_day" type="Boolean">
  Indicates whether the thermostat supports a single climate program applied to every day.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_weekday_weekend" type="Boolean">
  Indicates whether the thermostat supports weekday/weekend climate programs.
</ResponseField>

<ResponseField name="can_remotely_lock" type="Boolean">
  Indicates whether the device supports remote locking.
</ResponseField>

<ResponseField name="can_remotely_unlock" type="Boolean">
  Indicates whether the device supports remote unlocking.
</ResponseField>

<ResponseField name="can_run_thermostat_programs" type="Boolean">
  Indicates whether the thermostat supports running climate programs.
</ResponseField>

<ResponseField name="can_simulate_connection" type="Boolean">
  Indicates whether the device supports simulating connection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_disconnection" type="Boolean">
  Indicates whether the device supports simulating disconnection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_hub_connection" type="Boolean">
  Indicates whether the hub supports simulating connection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_hub_disconnection" type="Boolean">
  Indicates whether the hub supports simulating disconnection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_paid_subscription" type="Boolean">
  Indicates whether the device supports simulating a paid subscription in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_removal" type="Boolean">
  Indicates whether the device supports simulating removal in a sandbox.
</ResponseField>

<ResponseField name="can_turn_off_hvac" type="Boolean">
  Indicates whether the thermostat can be turned off.
</ResponseField>

<ResponseField name="can_unlock_with_code" type="Boolean">
  Indicates whether the lock supports unlocking with an access code.
</ResponseField>

<ResponseField name="capabilities_supported" type="Array">
  Collection of capabilities that the device supports when connected to Seam. Values are `access_code`, which indicates that the device can manage and utilize digital PIN codes for secure access; `lock`, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; `noise_detection`, which indicates that the device supports monitoring and responding to ambient noise levels; `thermostat`, which indicates that the device can regulate and adjust indoor temperatures; `battery`, which indicates that the device can manage battery life and health; and `phone`, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by [capability flags](/capability-guides/device-and-system-capabilities#capability-flags).
</ResponseField>

<ResponseField name="connected_account_id" type="String (UUID)">
  Unique identifier for the account associated with the device.
</ResponseField>

<ResponseField name="created_at" type="String (ISO 8601)">
  Date and time at which the device object was created.
</ResponseField>

<ResponseField name="custom_metadata" type="Object">
  Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application.
</ResponseField>

<ResponseField name="device_id" type="String (UUID)">
  ID of the device.
</ResponseField>

<ResponseField name="device_type" type="Enum (String)">
  Type of the device.
</ResponseField>

<ResponseField name="display_name" type="String">
  Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices.
</ResponseField>

<ResponseField name="errors" type="Array">
  Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it.
</ResponseField>

<ResponseField name="is_managed" type="Boolean">
  Indicates whether Seam manages the device. See also [Managed and Unmanaged Devices](/core-concepts/devices/managed-and-unmanaged-devices).
</ResponseField>

<ResponseField name="nickname" type="String">
  Optional nickname to describe the device, settable through Seam.
</ResponseField>

<ResponseField name="properties" type="Object">
  Properties of the device.

  <Expandable title="properties">
    <ResponseField name="accessory_keypad" type="Object">
      Accessory keypad properties and state.

      <Expandable title="properties">
        <ResponseField name="battery" type="Object">
          Keypad battery properties.

          <Expandable title="properties">
            <ResponseField name="level" type="number">
              The level.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="is_connected" type="Boolean">
          Indicates if an accessory keypad is connected to the device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="appearance" type="Object">
      Appearance-related properties, as reported by the device.

      <Expandable title="properties">
        <ResponseField name="name" type="String">
          Name of the device as seen from the provider API and application, not settable through Seam.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="battery" type="Object">
      Represents the current status of the battery charge level.

      <Expandable title="properties">
        <ResponseField name="level" type="number">
          Battery charge level as a value between 0 and 1, inclusive.
        </ResponseField>

        <ResponseField name="status" type="Enum (String)">
          Represents the current status of the battery charge level. Values are `critical`, which indicates an extremely low level, suggesting imminent shutdown or an urgent need for charging; `low`, which signifies that the battery is under the preferred threshold and should be charged soon; `good`, which denotes a satisfactory charge level, adequate for normal use without the immediate need for recharging; and `full`, which represents a battery that is fully charged, providing the maximum duration of usage.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="battery_level" type="number">
      Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
    </ResponseField>

    <ResponseField name="currently_triggering_noise_threshold_ids" type="Array">
      Array of noise threshold IDs that are currently triggering.
    </ResponseField>

    <ResponseField name="has_direct_power" type="Boolean">
      Indicates whether the device has direct power.
    </ResponseField>

    <ResponseField name="image_alt_text" type="String">
      Alt text for the device image.
    </ResponseField>

    <ResponseField name="image_url" type="String">
      Image URL for the device.
    </ResponseField>

    <ResponseField name="manufacturer" type="String">
      Manufacturer of the device. When a device, such as a smart lock, is connected through a smart hub, the manufacturer of the device might be different from that of the smart hub.
    </ResponseField>

    <ResponseField name="model" type="Object">
      Device model-related properties.

      <Expandable title="properties">
        <ResponseField name="accessory_keypad_supported" type="Boolean" deprecated>
          **Deprecated**. use device.properties.model.can\_connect\_accessory\_keypad

          The accessory keypad supported.
        </ResponseField>

        <ResponseField name="can_connect_accessory_keypad" type="Boolean">
          Indicates whether the device can connect a accessory keypad.
        </ResponseField>

        <ResponseField name="display_name" type="String">
          Display name of the device model.
        </ResponseField>

        <ResponseField name="has_built_in_keypad" type="Boolean">
          Indicates whether the device has a built in accessory keypad.
        </ResponseField>

        <ResponseField name="manufacturer_display_name" type="String">
          Display name that corresponds to the manufacturer-specific terminology for the device.
        </ResponseField>

        <ResponseField name="offline_access_codes_supported" type="Boolean" deprecated>
          **Deprecated**. use device.can\_program\_offline\_access\_codes.

          The offline access codes supported.
        </ResponseField>

        <ResponseField name="online_access_codes_supported" type="Boolean" deprecated>
          **Deprecated**. use device.can\_program\_online\_access\_codes.

          The online access codes supported.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="name" type="String" deprecated>
      **Deprecated**. use device.display\_name instead

      Name of the device.
    </ResponseField>

    <ResponseField name="noise_level_decibels" type="number">
      Indicates current noise level in decibels, if the device supports noise detection.
    </ResponseField>

    <ResponseField name="offline_access_codes_enabled" type="Boolean" deprecated>
      **Deprecated**. use device.can\_program\_offline\_access\_codes

      Indicates whether it is currently possible to use offline access codes for the device.
    </ResponseField>

    <ResponseField name="online" type="Boolean">
      Indicates whether the device is online.
    </ResponseField>

    <ResponseField name="online_access_codes_enabled" type="Boolean" deprecated>
      **Deprecated**. use device.can\_program\_online\_access\_codes

      Indicates whether it is currently possible to use online access codes for the device.
    </ResponseField>

    <ResponseField name="serial_number" type="String">
      Serial number of the device.
    </ResponseField>

    <ResponseField name="supports_accessory_keypad" type="Boolean" deprecated>
      **Deprecated**. use device.properties.model.can\_connect\_accessory\_keypad

      The supports accessory keypad.
    </ResponseField>

    <ResponseField name="supports_offline_access_codes" type="Boolean" deprecated>
      **Deprecated**. use offline\_access\_codes\_enabled

      The supports offline access codes.
    </ResponseField>

    <ResponseField name="assa_abloy_credential_service_metadata" type="Object">
      ASSA ABLOY Credential Service metadata for the phone.

      <Expandable title="properties">
        <ResponseField name="endpoints" type="Array">
          Endpoints associated with the phone.

          <Expandable title="properties">
            <ResponseField name="endpoint_id" type="String">
              ID of the associated endpoint.
            </ResponseField>

            <ResponseField name="is_active" type="Boolean">
              Indicated whether the endpoint is active.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="has_active_endpoint" type="Boolean">
          Indicates whether the credential service has active endpoints associated with the phone.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="salto_space_credential_service_metadata" type="Object">
      Salto Space credential service metadata for the phone.

      <Expandable title="properties">
        <ResponseField name="has_active_phone" type="Boolean">
          Indicates whether the credential service has an active associated phone.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="akiles_metadata" type="Object">
      Metadata for an Akiles device.

      <Expandable title="properties">
        <ResponseField name="_member_group_id" type="String">
          Group ID to which to add users for an Akiles device.
        </ResponseField>

        <ResponseField name="gadget_id" type="String">
          Gadget ID for an Akiles device.
        </ResponseField>

        <ResponseField name="gadget_name" type="String">
          Gadget name for an Akiles device.
        </ResponseField>

        <ResponseField name="product_name" type="String">
          Product name for an Akiles device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="assa_abloy_vostio_metadata" type="Object">
      Metadata for an ASSA ABLOY Vostio system.

      <Expandable title="properties">
        <ResponseField name="encoder_name" type="String">
          Encoder name for an ASSA ABLOY Vostio system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="august_metadata" type="Object">
      Metadata for an August device.

      <Expandable title="properties">
        <ResponseField name="has_keypad" type="Boolean">
          Indicates whether an August device has a keypad.
        </ResponseField>

        <ResponseField name="house_id" type="String">
          House ID for an August device.
        </ResponseField>

        <ResponseField name="house_name" type="String">
          House name for an August device.
        </ResponseField>

        <ResponseField name="keypad_battery_level" type="String">
          Keypad battery level for an August device.
        </ResponseField>

        <ResponseField name="lock_id" type="String">
          Lock ID for an August device.
        </ResponseField>

        <ResponseField name="lock_name" type="String">
          Lock name for an August device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for an August device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="avigilon_alta_metadata" type="Object">
      Metadata for an Avigilon Alta system.

      <Expandable title="properties">
        <ResponseField name="entry_name" type="String">
          Entry name for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="entry_relays_total_count" type="number">
          Total count of entry relays for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="org_name" type="String">
          Organization name for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="site_id" type="number">
          Site ID for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="site_name" type="String">
          Site name for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="zone_id" type="number">
          Zone ID for an Avigilon Alta system.
        </ResponseField>

        <ResponseField name="zone_name" type="String">
          Zone name for an Avigilon Alta system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="brivo_metadata" type="Object">
      Metadata for a Brivo device.

      <Expandable title="properties">
        <ResponseField name="activation_enabled" type="Boolean">
          Indicates whether the Brivo access point has activation (remote unlock) enabled.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Brivo device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="controlbyweb_metadata" type="Object">
      Metadata for a ControlByWeb device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a ControlByWeb device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a ControlByWeb device.
        </ResponseField>

        <ResponseField name="relay_name" type="String">
          Relay name for a ControlByWeb device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="dormakaba_oracode_metadata" type="Object">
      Metadata for a dormakaba Oracode device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="Object">
          Device ID for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="door_id" type="number">
          Door ID for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="door_is_wireless" type="Boolean">
          Indicates whether a door is wireless for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="door_name" type="String">
          Door name for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="iana_timezone" type="String">
          IANA time zone for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="predefined_time_slots" type="Array">
          Predefined time slots for a dormakaba Oracode device.

          <Expandable title="properties">
            <ResponseField name="check_in_time" type="String">
              Check in time for a time slot for a dormakaba Oracode device.
            </ResponseField>

            <ResponseField name="check_out_time" type="String">
              Checkout time for a time slot for a dormakaba Oracode device.
            </ResponseField>

            <ResponseField name="dormakaba_oracode_user_level_id" type="String (UUID)">
              ID of a user level for a dormakaba Oracode device.
            </ResponseField>

            <ResponseField name="dormakaba_oracode_user_level_prefix" type="number">
              Prefix for a user level for a dormakaba Oracode device.
            </ResponseField>

            <ResponseField name="is_24_hour" type="Boolean">
              Indicates whether a time slot for a dormakaba Oracode device is a 24-hour time slot.
            </ResponseField>

            <ResponseField name="is_biweekly_mode" type="Boolean">
              Indicates whether a time slot for a dormakaba Oracode device is in biweekly mode.
            </ResponseField>

            <ResponseField name="is_master" type="Boolean">
              Indicates whether a time slot for a dormakaba Oracode device is a master time slot.
            </ResponseField>

            <ResponseField name="is_one_shot" type="Boolean">
              Indicates whether a time slot for a dormakaba Oracode device is a one-shot time slot.
            </ResponseField>

            <ResponseField name="name" type="String">
              Name of a time slot for a dormakaba Oracode device.
            </ResponseField>

            <ResponseField name="prefix" type="number">
              Prefix for a time slot for a dormakaba Oracode device.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="site_id" type="number" deprecated>
          **Deprecated**. Previously marked as "@DEPRECATED."

          Site ID for a dormakaba Oracode device.
        </ResponseField>

        <ResponseField name="site_name" type="String">
          Site name for a dormakaba Oracode device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ecobee_metadata" type="Object">
      Metadata for an ecobee device.

      <Expandable title="properties">
        <ResponseField name="device_name" type="String">
          Device name for an ecobee device.
        </ResponseField>

        <ResponseField name="ecobee_device_id" type="String">
          Device ID for an ecobee device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="four_suites_metadata" type="Object">
      Metadata for a 4SUITES device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="number">
          Device ID for a 4SUITES device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a 4SUITES device.
        </ResponseField>

        <ResponseField name="reclose_delay_in_seconds" type="number">
          Reclose delay, in seconds, for a 4SUITES device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="genie_metadata" type="Object">
      Metadata for a Genie device.

      <Expandable title="properties">
        <ResponseField name="device_name" type="String">
          Lock name for a Genie device.
        </ResponseField>

        <ResponseField name="door_name" type="String">
          Door name for a Genie device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="honeywell_resideo_metadata" type="Object">
      Metadata for a Honeywell Resideo device.

      <Expandable title="properties">
        <ResponseField name="device_name" type="String">
          Device name for a Honeywell Resideo device.
        </ResponseField>

        <ResponseField name="honeywell_resideo_device_id" type="String">
          Device ID for a Honeywell Resideo device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="igloo_metadata" type="Object">
      Metadata for an igloo device.

      <Expandable title="properties">
        <ResponseField name="bridge_id" type="String">
          Bridge ID for an igloo device.
        </ResponseField>

        <ResponseField name="device_id" type="String">
          Device ID for an igloo device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for an igloo device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="igloohome_metadata" type="Object">
      Metadata for an igloohome device.

      <Expandable title="properties">
        <ResponseField name="bridge_id" type="String">
          Bridge ID for an igloohome device.
        </ResponseField>

        <ResponseField name="bridge_name" type="String">
          Bridge name for an igloohome device.
        </ResponseField>

        <ResponseField name="device_id" type="String">
          Device ID for an igloohome device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for an igloohome device.
        </ResponseField>

        <ResponseField name="is_accessory_keypad_linked_to_bridge" type="Boolean">
          Indicates whether a keypad is linked to a bridge for an igloohome device.
        </ResponseField>

        <ResponseField name="keypad_id" type="String">
          Keypad ID for an igloohome device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="keynest_metadata" type="Object">
      Metadata for a KeyNest device.

      <Expandable title="properties">
        <ResponseField name="address" type="String">
          Address for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_or_last_store_id" type="number">
          Current or last store ID for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_status" type="String">
          Current status for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_user_company" type="String">
          Current user company for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_user_email" type="String">
          Current user email for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_user_name" type="String">
          Current user name for a KeyNest device.
        </ResponseField>

        <ResponseField name="current_user_phone_number" type="String">
          Current user phone number for a KeyNest device.
        </ResponseField>

        <ResponseField name="default_office_id" type="number">
          Default office ID for a KeyNest device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a KeyNest device.
        </ResponseField>

        <ResponseField name="fob_id" type="number">
          Fob ID for a KeyNest device.
        </ResponseField>

        <ResponseField name="handover_method" type="String">
          Handover method for a KeyNest device.
        </ResponseField>

        <ResponseField name="has_photo" type="Boolean">
          Whether the KeyNest device has a photo.
        </ResponseField>

        <ResponseField name="is_quadient_locker" type="Boolean">
          Whether the key is in a locker that does not support the access codes API.
        </ResponseField>

        <ResponseField name="key_id" type="String">
          Key ID for a KeyNest device.
        </ResponseField>

        <ResponseField name="key_notes" type="String">
          Key notes for a KeyNest device.
        </ResponseField>

        <ResponseField name="keynest_app_user" type="String">
          KeyNest app user for a KeyNest device.
        </ResponseField>

        <ResponseField name="last_movement" type="String">
          Last movement timestamp for a KeyNest device.
        </ResponseField>

        <ResponseField name="property_id" type="String">
          Property ID for a KeyNest device.
        </ResponseField>

        <ResponseField name="property_postcode" type="String">
          Property postcode for a KeyNest device.
        </ResponseField>

        <ResponseField name="status_type" type="String">
          Status type for a KeyNest device.
        </ResponseField>

        <ResponseField name="subscription_plan" type="String">
          Subscription plan for a KeyNest device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="kisi_metadata" type="Object">
      Metadata for a Kisi device.

      <Expandable title="properties">
        <ResponseField name="description" type="String">
          Description for a Kisi device.
        </ResponseField>

        <ResponseField name="lock_id" type="number">
          Lock ID for a Kisi device.
        </ResponseField>

        <ResponseField name="lock_name" type="String">
          Lock name for a Kisi device.
        </ResponseField>

        <ResponseField name="place_name" type="String">
          Place name for a Kisi device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="korelock_metadata" type="Object">
      Metadata for a Korelock device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Korelock device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Korelock device.
        </ResponseField>

        <ResponseField name="firmware_version" type="String">
          Firmware version for a Korelock device.
        </ResponseField>

        <ResponseField name="location_id" type="String">
          Location ID for a Korelock device. Required for timebound access codes.
        </ResponseField>

        <ResponseField name="model_code" type="String">
          Model code for a Korelock device.
        </ResponseField>

        <ResponseField name="serial_number" type="String">
          Serial number for a Korelock device.
        </ResponseField>

        <ResponseField name="wifi_signal_strength" type="number">
          WiFi signal strength (0-1) for a Korelock device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="kwikset_metadata" type="Object">
      Metadata for a Kwikset device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Kwikset device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Kwikset device.
        </ResponseField>

        <ResponseField name="model_number" type="String">
          Model number for a Kwikset device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="lockly_metadata" type="Object">
      Metadata for a Lockly device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Lockly device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Lockly device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for a Lockly device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="minut_metadata" type="Object">
      Metadata for a Minut device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Minut device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Minut device.
        </ResponseField>

        <ResponseField name="latest_sensor_values" type="Object">
          Latest sensor values for a Minut device.

          <Expandable title="properties">
            <ResponseField name="accelerometer_z" type="Object">
              Latest accelerometer Z-axis reading for a Minut device.

              <Expandable title="properties">
                <ResponseField name="time" type="String">
                  Time of latest accelerometer Z-axis reading for a Minut device.
                </ResponseField>

                <ResponseField name="value" type="number">
                  Value of latest accelerometer Z-axis reading for a Minut device.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="humidity" type="Object">
              Latest humidity reading for a Minut device.

              <Expandable title="properties">
                <ResponseField name="time" type="String">
                  Time of latest humidity reading for a Minut device.
                </ResponseField>

                <ResponseField name="value" type="number">
                  Value of latest humidity reading for a Minut device.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="pressure" type="Object">
              Latest pressure reading for a Minut device.

              <Expandable title="properties">
                <ResponseField name="time" type="String">
                  Time of latest pressure reading for a Minut device.
                </ResponseField>

                <ResponseField name="value" type="number">
                  Value of latest pressure reading for a Minut device.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="sound" type="Object">
              Latest sound reading for a Minut device.

              <Expandable title="properties">
                <ResponseField name="time" type="String">
                  Time of latest sound reading for a Minut device.
                </ResponseField>

                <ResponseField name="value" type="number">
                  Value of latest sound reading for a Minut device.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="temperature" type="Object">
              Latest temperature reading for a Minut device.

              <Expandable title="properties">
                <ResponseField name="time" type="String">
                  Time of latest temperature reading for a Minut device.
                </ResponseField>

                <ResponseField name="value" type="number">
                  Value of latest temperature reading for a Minut device.
                </ResponseField>
              </Expandable>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nest_metadata" type="Object">
      Metadata for a Google Nest device.

      <Expandable title="properties">
        <ResponseField name="device_custom_name" type="String">
          Custom device name for a Google Nest device. The device owner sets this value.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Google Nest device. Google sets this value.
        </ResponseField>

        <ResponseField name="display_name" type="String">
          Display name for a Google Nest device.
        </ResponseField>

        <ResponseField name="nest_device_id" type="String">
          Device ID for a Google Nest device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="noiseaware_metadata" type="Object">
      Metadata for a NoiseAware device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a NoiseAware device.
        </ResponseField>

        <ResponseField name="device_model" type="Enum (String)">
          Device model for a NoiseAware device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a NoiseAware device.
        </ResponseField>

        <ResponseField name="noise_level_decibel" type="number">
          Noise level, in decibels, for a NoiseAware device.
        </ResponseField>

        <ResponseField name="noise_level_nrs" type="number">
          Noise level, expressed as a Noise Risk Score (NRS), for a NoiseAware device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nuki_metadata" type="Object">
      Metadata for a Nuki device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Nuki device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Nuki device.
        </ResponseField>

        <ResponseField name="keypad_2_paired" type="Boolean">
          Indicates whether keypad 2 is paired for a Nuki device.
        </ResponseField>

        <ResponseField name="keypad_battery_critical" type="Boolean">
          Indicates whether the keypad battery is in a critical state for a Nuki device.
        </ResponseField>

        <ResponseField name="keypad_paired" type="Boolean">
          Indicates whether the keypad is paired for a Nuki device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="omnitec_metadata" type="Object">
      Metadata for an Omnitec device.

      <Expandable title="properties">
        <ResponseField name="has_gateway" type="Boolean">
          Whether the Omnitec lock has a connected gateway for remote operations.
        </ResponseField>

        <ResponseField name="lock_alias" type="String">
          Operator-assigned alias for an Omnitec device.
        </ResponseField>

        <ResponseField name="lock_id" type="number">
          Lock ID for an Omnitec device.
        </ResponseField>

        <ResponseField name="lock_mac" type="String">
          Bluetooth MAC address for an Omnitec device.
        </ResponseField>

        <ResponseField name="lock_name" type="String">
          Lock name for an Omnitec device.
        </ResponseField>

        <ResponseField name="time_zone" type="String">
          IANA time zone for the Omnitec device, used to schedule time-bound access codes at the correct local time (accounting for DST).
        </ResponseField>

        <ResponseField name="timezone_raw_offset_ms" type="number">
          Static UTC offset of the Omnitec lock in milliseconds. Does not account for DST.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ring_metadata" type="Object">
      Metadata for a Ring device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Ring device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Ring device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="salto_ks_metadata" type="Object">
      Metadata for a Salto KS device.

      <Expandable title="properties">
        <ResponseField name="battery_level" type="String">
          Battery level for a Salto KS device.
        </ResponseField>

        <ResponseField name="customer_reference" type="String">
          Customer reference for a Salto KS device.
        </ResponseField>

        <ResponseField name="has_custom_pin_subscription" type="Boolean">
          Indicates whether the site has a Salto KS subscription that supports custom PINs.
        </ResponseField>

        <ResponseField name="lock_id" type="String">
          Lock ID for a Salto KS device.
        </ResponseField>

        <ResponseField name="lock_type" type="String">
          Lock type for a Salto KS device.
        </ResponseField>

        <ResponseField name="locked_state" type="String">
          Locked state for a Salto KS device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for a Salto KS device.
        </ResponseField>

        <ResponseField name="site_id" type="String">
          Site ID for the Salto KS site to which the device belongs.
        </ResponseField>

        <ResponseField name="site_name" type="String">
          Site name for the Salto KS site to which the device belongs.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="salto_metadata" type="Object" deprecated>
      **Deprecated**. Use `salto_ks_metadata ` instead.

      Metada for a Salto device.

      <Expandable title="properties">
        <ResponseField name="battery_level" type="String">
          Battery level for a Salto device.
        </ResponseField>

        <ResponseField name="customer_reference" type="String">
          Customer reference for a Salto device.
        </ResponseField>

        <ResponseField name="lock_id" type="String">
          Lock ID for a Salto device.
        </ResponseField>

        <ResponseField name="lock_type" type="String">
          Lock type for a Salto device.
        </ResponseField>

        <ResponseField name="locked_state" type="String">
          Locked state for a Salto device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for a Salto device.
        </ResponseField>

        <ResponseField name="site_id" type="String">
          Site ID for the Salto KS site to which the device belongs.
        </ResponseField>

        <ResponseField name="site_name" type="String">
          Site name for the Salto KS site to which the device belongs.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="schlage_metadata" type="Object">
      Metadata for a Schlage device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Schlage device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Schlage device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for a Schlage device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="seam_bridge_metadata" type="Object">
      Metadata for Seam Bridge.

      <Expandable title="properties">
        <ResponseField name="device_num" type="number">
          Device number for Seam Bridge.
        </ResponseField>

        <ResponseField name="name" type="String">
          Name for Seam Bridge.
        </ResponseField>

        <ResponseField name="unlock_method" type="Enum (String)">
          Unlock method for Seam Bridge.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="sensi_metadata" type="Object">
      Metadata for a Sensi device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Sensi device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Sensi device.
        </ResponseField>

        <ResponseField name="dual_setpoints_not_supported" type="Boolean">
          Set to true when the device does not support the /dual-setpoints API endpoint.
        </ResponseField>

        <ResponseField name="product_type" type="String">
          Product type for a Sensi device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="smartthings_metadata" type="Object">
      Metadata for a SmartThings device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a SmartThings device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a SmartThings device.
        </ResponseField>

        <ResponseField name="location_id" type="String">
          Location ID for a SmartThings device.
        </ResponseField>

        <ResponseField name="model" type="String">
          Model for a SmartThings device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="tado_metadata" type="Object">
      Metadata for a tado° device.

      <Expandable title="properties">
        <ResponseField name="device_type" type="String">
          Device type for a tado° device.
        </ResponseField>

        <ResponseField name="serial_no" type="String">
          Serial number for a tado° device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="tedee_metadata" type="Object">
      Metadata for a Tedee device.

      <Expandable title="properties">
        <ResponseField name="bridge_id" type="number">
          Bridge ID for a Tedee device.
        </ResponseField>

        <ResponseField name="bridge_name" type="String">
          Bridge name for a Tedee device.
        </ResponseField>

        <ResponseField name="device_id" type="number">
          Device ID for a Tedee device.
        </ResponseField>

        <ResponseField name="device_model" type="String">
          Device model for a Tedee device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Tedee device.
        </ResponseField>

        <ResponseField name="keypad_id" type="number">
          Keypad ID for a Tedee device.
        </ResponseField>

        <ResponseField name="serial_number" type="String">
          Serial number for a Tedee device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ttlock_metadata" type="Object">
      Metadata for a TTLock device.

      <Expandable title="properties">
        <ResponseField name="feature_value" type="String">
          Feature value for a TTLock device.
        </ResponseField>

        <ResponseField name="features" type="Object">
          Features for a TTLock device.

          <Expandable title="properties">
            <ResponseField name="auto_lock_time_config" type="Boolean">
              Indicates whether a TTLock device supports auto-lock time configuration.
            </ResponseField>

            <ResponseField name="incomplete_keyboard_passcode" type="Boolean">
              Indicates whether a TTLock device supports an incomplete keyboard passcode.
            </ResponseField>

            <ResponseField name="lock_command" type="Boolean">
              Indicates whether a TTLock device supports the lock command.
            </ResponseField>

            <ResponseField name="passcode" type="Boolean">
              Indicates whether a TTLock device supports a passcode.
            </ResponseField>

            <ResponseField name="passcode_management" type="Boolean">
              Indicates whether a TTLock device supports passcode management.
            </ResponseField>

            <ResponseField name="unlock_via_gateway" type="Boolean">
              Indicates whether a TTLock device supports unlock via gateway.
            </ResponseField>

            <ResponseField name="wifi" type="Boolean">
              Indicates whether a TTLock device supports Wi-Fi.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="has_gateway" type="Boolean">
          Indicates whether a TTLock device has a gateway.
        </ResponseField>

        <ResponseField name="lock_alias" type="String">
          Lock alias for a TTLock device.
        </ResponseField>

        <ResponseField name="lock_id" type="number">
          Lock ID for a TTLock device.
        </ResponseField>

        <ResponseField name="timezone_raw_offset_ms" type="number">
          Lock-side timezone offset in milliseconds east of UTC, as configured in the TTLock app. Source of truth for the lock's wall-clock interpretation of access code start/end times — a misconfigured value here is the typical cause of customer "codes offset by N hours" reports. Diagnostic only; Seam does not convert times based on this value.
        </ResponseField>

        <ResponseField name="wireless_keypads" type="Array">
          Wireless keypads for a TTLock device.

          <Expandable title="properties">
            <ResponseField name="wireless_keypad_id" type="number">
              ID for a wireless keypad for a TTLock device.
            </ResponseField>

            <ResponseField name="wireless_keypad_name" type="String">
              Name for a wireless keypad for a TTLock device.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="two_n_metadata" type="Object">
      Metadata for a 2N device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="number">
          Device ID for a 2N device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a 2N device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ultraloq_metadata" type="Object">
      Metadata for an Ultraloq device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for an Ultraloq device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for an Ultraloq device.
        </ResponseField>

        <ResponseField name="device_type" type="String">
          Device type for an Ultraloq device.
        </ResponseField>

        <ResponseField name="time_zone" type="String">
          IANA timezone for the Ultraloq device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="visionline_metadata" type="Object">
      Metadata for an ASSA ABLOY Visionline system.

      <Expandable title="properties">
        <ResponseField name="encoder_id" type="String">
          Encoder ID for an ASSA ABLOY Visionline system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="wyze_metadata" type="Object">
      Metadata for a Wyze device.

      <Expandable title="properties">
        <ResponseField name="device_id" type="String">
          Device ID for a Wyze device.
        </ResponseField>

        <ResponseField name="device_info_model" type="String">
          Device information model for a Wyze device.
        </ResponseField>

        <ResponseField name="device_name" type="String">
          Device name for a Wyze device.
        </ResponseField>

        <ResponseField name="keypad_uuid" type="String">
          Keypad UUID for a Wyze device.
        </ResponseField>

        <ResponseField name="locker_status_hardlock" type="number">
          Locker status (hardlock) for a Wyze device.
        </ResponseField>

        <ResponseField name="product_model" type="String">
          Product model for a Wyze device.
        </ResponseField>

        <ResponseField name="product_name" type="String">
          Product name for a Wyze device.
        </ResponseField>

        <ResponseField name="product_type" type="String">
          Product type for a Wyze device.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="auto_lock_delay_seconds" type="number">
      The delay in seconds before the lock automatically locks after being unlocked.
    </ResponseField>

    <ResponseField name="auto_lock_enabled" type="Boolean">
      Indicates whether automatic locking is enabled.
    </ResponseField>

    <ResponseField name="backup_access_code_pool_enabled" type="Boolean">
      Indicates whether the [backup access code pool](/low-level-apis/smart-locks/access-codes/backup-access-codes) is currently enabled for the device. To disable it, set this to `false` using [/devices/update](/api/devices/update).
    </ResponseField>

    <ResponseField name="code_constraints" type="Array">
      Constraints on access codes for the device. Seam represents each constraint as an object with a `constraint_type` property. Depending on the constraint type, there may also be additional properties. Note that some constraints are manufacturer- or device-specific.

      <Expandable title="properties">
        <ResponseField name="constraint_type" type="Enum (String)">
          The constraint type.
        </ResponseField>

        <ResponseField name="max_length" type="number">
          Maximum name length constraint for access codes.
        </ResponseField>

        <ResponseField name="min_length" type="number">
          Minimum name length constraint for access codes.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="door_open" type="Boolean">
      Indicates whether the door is open.
    </ResponseField>

    <ResponseField name="has_native_entry_events" type="Boolean">
      Indicates whether the device supports native entry events.
    </ResponseField>

    <ResponseField name="keypad_battery" type="Object">
      Keypad battery status.

      <Expandable title="properties">
        <ResponseField name="level" type="number">
          Keypad battery charge level.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="locked" type="Boolean">
      Indicates whether the lock is locked.
    </ResponseField>

    <ResponseField name="max_active_codes_supported" type="number">
      Maximum number of active access codes that the device supports.
    </ResponseField>

    <ResponseField name="offline_time_frame_options" type="Array">
      Time frames that may be requested when creating an offline access code, expressed as a list of options. The caller picks one option (by matching the requested duration when the options' duration ranges do not overlap, or by `display_name` when they do) and satisfies that one option's rules. When `undefined`, any time frame works.

      <Expandable title="properties">
        <ResponseField name="display_name" type="String">
          Label for this option. For a single-option device, the product name (for example, `algoPIN` or `SmartPIN`); for a multi-option device, a label that distinguishes it (for example, `Hourly` or `Fixed start times`).
        </ResponseField>

        <ResponseField name="end_date_recurrence_rule" type="String">
          iCalendar recurrence rule (RRULE) that the end date must fall on. Constrains which calendar dates are selectable, independent of the time-of-day rules.
        </ResponseField>

        <ResponseField name="matching_start_end_time" type="Boolean">
          When `true`, the start and end must fall at the same time of day (the caller picks which). Mutually exclusive with `time_pairs`.
        </ResponseField>

        <ResponseField name="max_duration" type="String">
          Maximum duration this option covers, as an ISO 8601 duration (for example, `PT672H` or `P367D`). Omitted when there is no maximum.
        </ResponseField>

        <ResponseField name="min_duration" type="String">
          Minimum duration this option covers, as an ISO 8601 duration (for example, `PT1H` or `P29D`). Omitted when there is no minimum.
        </ResponseField>

        <ResponseField name="start_date_recurrence_rule" type="String">
          iCalendar recurrence rule (RRULE) that the start date must fall on (for example, `FREQ=MONTHLY;BYDAY=1MO,3MO`). Constrains which calendar dates are selectable, independent of the time-of-day rules.
        </ResponseField>

        <ResponseField name="time_pairs" type="Array">
          Fixed start/end time pairings the caller chooses from. Mutually exclusive with `matching_start_end_time`.

          <Expandable title="properties">
            <ResponseField name="display_name" type="String">
              Label for the start/end time pairing.
            </ResponseField>

            <ResponseField name="end_time" type="String">
              End time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`. An `end_time` earlier on the clock than `start_time` means the end falls on a later date.
            </ResponseField>

            <ResponseField name="start_time" type="String">
              Start time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="time_zone" type="String">
          IANA time zone for interpreting `time_pairs` and the date recurrence rules. Present only when the option fixes times or dates.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="online_time_frame_options" type="Array">
      Time frames that may be requested when creating an online access code, expressed as a list of options. The caller picks one option (by matching the requested duration when the options' duration ranges do not overlap, or by `display_name` when they do) and satisfies that one option's rules. When `undefined`, any time frame works.

      <Expandable title="properties">
        <ResponseField name="display_name" type="String">
          Label for this option. For a single-option device, the product name (for example, `algoPIN` or `SmartPIN`); for a multi-option device, a label that distinguishes it (for example, `Hourly` or `Fixed start times`).
        </ResponseField>

        <ResponseField name="end_date_recurrence_rule" type="String">
          iCalendar recurrence rule (RRULE) that the end date must fall on. Constrains which calendar dates are selectable, independent of the time-of-day rules.
        </ResponseField>

        <ResponseField name="matching_start_end_time" type="Boolean">
          When `true`, the start and end must fall at the same time of day (the caller picks which). Mutually exclusive with `time_pairs`.
        </ResponseField>

        <ResponseField name="max_duration" type="String">
          Maximum duration this option covers, as an ISO 8601 duration (for example, `PT672H` or `P367D`). Omitted when there is no maximum.
        </ResponseField>

        <ResponseField name="min_duration" type="String">
          Minimum duration this option covers, as an ISO 8601 duration (for example, `PT1H` or `P29D`). Omitted when there is no minimum.
        </ResponseField>

        <ResponseField name="start_date_recurrence_rule" type="String">
          iCalendar recurrence rule (RRULE) that the start date must fall on (for example, `FREQ=MONTHLY;BYDAY=1MO,3MO`). Constrains which calendar dates are selectable, independent of the time-of-day rules.
        </ResponseField>

        <ResponseField name="time_pairs" type="Array">
          Fixed start/end time pairings the caller chooses from. Mutually exclusive with `matching_start_end_time`.

          <Expandable title="properties">
            <ResponseField name="display_name" type="String">
              Label for the start/end time pairing.
            </ResponseField>

            <ResponseField name="end_time" type="String">
              End time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`. An `end_time` earlier on the clock than `start_time` means the end falls on a later date.
            </ResponseField>

            <ResponseField name="start_time" type="String">
              Start time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="time_zone" type="String">
          IANA time zone for interpreting `time_pairs` and the date recurrence rules. Present only when the option fixes times or dates.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="supported_code_lengths" type="Array">
      Supported code lengths for access codes.
    </ResponseField>

    <ResponseField name="supports_backup_access_code_pool" type="Boolean">
      Indicates whether the device supports a [backup access code pool](/low-level-apis/smart-locks/access-codes/backup-access-codes).
    </ResponseField>

    <ResponseField name="active_thermostat_schedule" type="Object" deprecated>
      **Deprecated**. Use `active_thermostat_schedule_id` with `/thermostats/schedules/get` instead.

      Active [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).

      <Expandable title="properties">
        <ResponseField name="climate_preset_key" type="String">
          Key of the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
        </ResponseField>

        <ResponseField name="created_at" type="String (ISO 8601)">
          Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) was created.
        </ResponseField>

        <ResponseField name="device_id" type="String (UUID)">
          ID of the desired [thermostat](/capability-guides/thermostats) device.
        </ResponseField>

        <ResponseField name="ends_at" type="String (ISO 8601)">
          Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
        </ResponseField>

        <ResponseField name="errors" type="Array">
          Errors associated with the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).

          <Expandable title="properties">
            <ResponseField name="error_code" type="String">
              Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
            </ResponseField>

            <ResponseField name="message" type="String">
              Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="is_override_allowed" type="Boolean">
          Indicates whether a person at the thermostat can change the thermostat's settings after the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts.
        </ResponseField>

        <ResponseField name="max_override_period_minutes" type="number">
          Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets). See also [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
        </ResponseField>

        <ResponseField name="name" type="String">
          User-friendly name to identify the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
        </ResponseField>

        <ResponseField name="starts_at" type="String (ISO 8601)">
          Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
        </ResponseField>

        <ResponseField name="thermostat_schedule_id" type="String (UUID)">
          ID of the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
        </ResponseField>

        <ResponseField name="workspace_id" type="String (UUID)">
          ID of the workspace that contains the thermostat schedule.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="active_thermostat_schedule_id" type="String (UUID)">
      ID of the active [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
    </ResponseField>

    <ResponseField name="available_climate_preset_modes" type="Array">
      Climate preset modes that the thermostat supports, such as "home", "away", "wake", "sleep", "occupied", and "unoccupied".
    </ResponseField>

    <ResponseField name="available_climate_presets" type="Array">
      Available [climate presets](/capability-guides/thermostats/creating-and-managing-climate-presets) for the thermostat.

      <Expandable title="properties">
        <ResponseField name="can_delete" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
        </ResponseField>

        <ResponseField name="can_edit" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
        </ResponseField>

        <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
        </ResponseField>

        <ResponseField name="climate_preset_key" type="String">
          Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="climate_preset_mode" type="Enum (String)">
          The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
        </ResponseField>

        <ResponseField name="cooling_set_point_celsius" type="number">
          Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="cooling_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="display_name" type="String">
          Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="ecobee_metadata" type="Object">
          Metadata specific to the Ecobee climate, if applicable.

          <Expandable title="properties">
            <ResponseField name="climate_ref" type="String">
              Reference to the Ecobee climate, if applicable.
            </ResponseField>

            <ResponseField name="is_optimized" type="Boolean">
              Indicates if the climate preset is optimized by Ecobee.
            </ResponseField>

            <ResponseField name="owner" type="Enum (String)">
              Indicates whether the climate preset is owned by the user or the system.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="fan_mode_setting" type="Enum (String)">
          Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
        </ResponseField>

        <ResponseField name="heating_set_point_celsius" type="number">
          Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="heating_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="hvac_mode_setting" type="Enum (String)">
          Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
        </ResponseField>

        <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
          **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

          Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
        </ResponseField>

        <ResponseField name="name" type="String">
          User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="available_fan_mode_settings" type="Array">
      Fan mode settings that the thermostat supports.
    </ResponseField>

    <ResponseField name="available_hvac_mode_settings" type="Array">
      HVAC mode settings that the thermostat supports.
    </ResponseField>

    <ResponseField name="current_climate_setting" type="Object">
      Current climate setting.

      <Expandable title="properties">
        <ResponseField name="can_delete" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
        </ResponseField>

        <ResponseField name="can_edit" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
        </ResponseField>

        <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
        </ResponseField>

        <ResponseField name="climate_preset_key" type="String">
          Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="climate_preset_mode" type="Enum (String)">
          The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
        </ResponseField>

        <ResponseField name="cooling_set_point_celsius" type="number">
          Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="cooling_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="display_name" type="String">
          Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="ecobee_metadata" type="Object">
          Metadata specific to the Ecobee climate, if applicable.

          <Expandable title="properties">
            <ResponseField name="climate_ref" type="String">
              Reference to the Ecobee climate, if applicable.
            </ResponseField>

            <ResponseField name="is_optimized" type="Boolean">
              Indicates if the climate preset is optimized by Ecobee.
            </ResponseField>

            <ResponseField name="owner" type="Enum (String)">
              Indicates whether the climate preset is owned by the user or the system.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="fan_mode_setting" type="Enum (String)">
          Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
        </ResponseField>

        <ResponseField name="heating_set_point_celsius" type="number">
          Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="heating_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="hvac_mode_setting" type="Enum (String)">
          Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
        </ResponseField>

        <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
          **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

          Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
        </ResponseField>

        <ResponseField name="name" type="String">
          User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="default_climate_setting" type="Object" deprecated>
      **Deprecated**. use fallback\_climate\_preset\_key to specify a fallback climate preset instead.

      The default climate setting.

      <Expandable title="properties">
        <ResponseField name="can_delete" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
        </ResponseField>

        <ResponseField name="can_edit" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
        </ResponseField>

        <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
          Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
        </ResponseField>

        <ResponseField name="climate_preset_key" type="String">
          Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="climate_preset_mode" type="Enum (String)">
          The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
        </ResponseField>

        <ResponseField name="cooling_set_point_celsius" type="number">
          Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="cooling_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="display_name" type="String">
          Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>

        <ResponseField name="ecobee_metadata" type="Object">
          Metadata specific to the Ecobee climate, if applicable.

          <Expandable title="properties">
            <ResponseField name="climate_ref" type="String">
              Reference to the Ecobee climate, if applicable.
            </ResponseField>

            <ResponseField name="is_optimized" type="Boolean">
              Indicates if the climate preset is optimized by Ecobee.
            </ResponseField>

            <ResponseField name="owner" type="Enum (String)">
              Indicates whether the climate preset is owned by the user or the system.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="fan_mode_setting" type="Enum (String)">
          Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
        </ResponseField>

        <ResponseField name="heating_set_point_celsius" type="number">
          Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="heating_set_point_fahrenheit" type="number">
          Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
        </ResponseField>

        <ResponseField name="hvac_mode_setting" type="Enum (String)">
          Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
        </ResponseField>

        <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
          **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

          Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
        </ResponseField>

        <ResponseField name="name" type="String">
          User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="fallback_climate_preset_key" type="String">
      Key of the [fallback climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) for the thermostat.
    </ResponseField>

    <ResponseField name="fan_mode_setting" type="Enum (String)" deprecated>
      **Deprecated**. Use `current_climate_setting.fan_mode_setting` instead.

      The fan mode setting.
    </ResponseField>

    <ResponseField name="is_cooling" type="Boolean">
      Indicates whether the connected HVAC system is currently cooling, as reported by the thermostat.
    </ResponseField>

    <ResponseField name="is_fan_running" type="Boolean">
      Indicates whether the fan in the connected HVAC system is currently running, as reported by the thermostat.
    </ResponseField>

    <ResponseField name="is_heating" type="Boolean">
      Indicates whether the connected HVAC system is currently heating, as reported by the thermostat.
    </ResponseField>

    <ResponseField name="is_temporary_manual_override_active" type="Boolean">
      Indicates whether the current thermostat settings differ from the most recent active program or schedule that Seam activated. For this condition to occur, `current_climate_setting.manual_override_allowed` must also be `true`.
    </ResponseField>

    <ResponseField name="max_cooling_set_point_celsius" type="number">
      Maximum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °C.
    </ResponseField>

    <ResponseField name="max_cooling_set_point_fahrenheit" type="number">
      Maximum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °F.
    </ResponseField>

    <ResponseField name="max_heating_set_point_celsius" type="number">
      Maximum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °C.
    </ResponseField>

    <ResponseField name="max_heating_set_point_fahrenheit" type="number">
      Maximum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °F.
    </ResponseField>

    <ResponseField name="max_thermostat_daily_program_periods_per_day" type="number">
      Maximum number of periods that the thermostat can support per day. For example, if the thermostat supports 4 periods per day, this value is 4.
    </ResponseField>

    <ResponseField name="max_unique_climate_presets_per_thermostat_weekly_program" type="number">
      Maximum number of climate presets that the thermostat can support for weekly programming.
    </ResponseField>

    <ResponseField name="min_cooling_set_point_celsius" type="number">
      Minimum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °C.
    </ResponseField>

    <ResponseField name="min_cooling_set_point_fahrenheit" type="number">
      Minimum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °F.
    </ResponseField>

    <ResponseField name="min_heating_cooling_delta_celsius" type="number">
      Minimum [temperature difference](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#minimum-heating-cooling-temperature-delta) in °C between the cooling and heating set points when in heat-cool (auto) mode.
    </ResponseField>

    <ResponseField name="min_heating_cooling_delta_fahrenheit" type="number">
      Minimum [temperature difference](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#minimum-heating-cooling-temperature-delta) in °F between the cooling and heating set points when in heat-cool (auto) mode.
    </ResponseField>

    <ResponseField name="min_heating_set_point_celsius" type="number">
      Minimum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °C.
    </ResponseField>

    <ResponseField name="min_heating_set_point_fahrenheit" type="number">
      Minimum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °F.
    </ResponseField>

    <ResponseField name="relative_humidity" type="number">
      Reported relative humidity, as a value between 0 and 1, inclusive.
    </ResponseField>

    <ResponseField name="temperature_celsius" type="number">
      Reported temperature in °C.
    </ResponseField>

    <ResponseField name="temperature_fahrenheit" type="number">
      Reported temperature in °F.
    </ResponseField>

    <ResponseField name="temperature_threshold" type="Object">
      Current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.

      <Expandable title="properties">
        <ResponseField name="lower_limit_celsius" type="number">
          Lower limit in °C within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
        </ResponseField>

        <ResponseField name="lower_limit_fahrenheit" type="number">
          Lower limit in °F within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
        </ResponseField>

        <ResponseField name="upper_limit_celsius" type="number">
          Upper limit in °C within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
        </ResponseField>

        <ResponseField name="upper_limit_fahrenheit" type="number">
          Upper limit in °F within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="thermostat_daily_program_period_precision_minutes" type="number">
      Precision of the thermostat's period in minutes. For example, if the thermostat supports 15-minute periods, this value is 15. All values are relative to the top of the hour, so for 15 minutes, the periods would be 0, 15, 30, and 45 minutes past the hour.
    </ResponseField>

    <ResponseField name="thermostat_daily_programs" type="Array">
      Configured [daily programs](/capability-guides/thermostats/creating-and-managing-thermostat-programs) for the thermostat.

      <Expandable title="properties">
        <ResponseField name="created_at" type="String (ISO 8601)">
          Date and time at which the thermostat daily program was created.
        </ResponseField>

        <ResponseField name="device_id" type="String (UUID)">
          ID of the thermostat device on which the thermostat daily program is configured.
        </ResponseField>

        <ResponseField name="name" type="String">
          User-friendly name to identify the thermostat daily program.
        </ResponseField>

        <ResponseField name="periods" type="Array">
          Array of thermostat daily program periods.

          <Expandable title="properties">
            <ResponseField name="climate_preset_key" type="String">
              Key of the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) to activate at the `starts_at_time`.
            </ResponseField>

            <ResponseField name="starts_at_time" type="String">
              Time at which the thermostat daily program period starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="thermostat_daily_program_id" type="String (UUID)">
          ID of the thermostat daily program.
        </ResponseField>

        <ResponseField name="workspace_id" type="String (UUID)">
          ID of the workspace that contains the thermostat daily program.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="thermostat_weekly_program" type="Object">
      Current [weekly program](/capability-guides/thermostats/creating-and-managing-thermostat-programs) for the thermostat.

      <Expandable title="properties">
        <ResponseField name="created_at" type="String (ISO 8601)">
          Date and time at which the thermostat weekly program was created.
        </ResponseField>

        <ResponseField name="friday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Fridays.
        </ResponseField>

        <ResponseField name="monday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Mondays.
        </ResponseField>

        <ResponseField name="saturday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Saturdays.
        </ResponseField>

        <ResponseField name="sunday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Sundays.
        </ResponseField>

        <ResponseField name="thursday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Thursdays.
        </ResponseField>

        <ResponseField name="tuesday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Tuesdays.
        </ResponseField>

        <ResponseField name="wednesday_program_id" type="String (UUID)">
          ID of the thermostat daily program to run on Wednesdays.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="space_ids" type="Array">
  IDs of the spaces the device is in.
</ResponseField>

<ResponseField name="warnings" type="Array">
  Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it.
</ResponseField>

<ResponseField name="workspace_id" type="String (UUID)">
  Unique identifier for the Seam workspace associated with the device.
</ResponseField>

<ResponseField name="device_manufacturer" type="Object">
  Manufacturer of the device. Represents the hardware brand, which may differ from the provider.

  <Expandable title="properties">
    <ResponseField name="display_name" type="String">
      Display name for the manufacturer, such as `August`, `Yale`, `Salto`, and so on.
    </ResponseField>

    <ResponseField name="image_url" type="String">
      Image URL for the manufacturer logo.
    </ResponseField>

    <ResponseField name="manufacturer" type="String">
      Manufacturer identifier, such as `august`, `yale`, `salto`, and so on.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="device_provider" type="Object">
  Provider of the device. Represents the third-party service through which the device is controlled.

  <Expandable title="properties">
    <ResponseField name="device_provider_name" type="String">
      Device provider name. Corresponds to the integration type, such as `august`, `schlage`, `yale_access`, and so on.
    </ResponseField>

    <ResponseField name="display_name" type="String">
      Display name for the device provider type.
    </ResponseField>

    <ResponseField name="image_url" type="String">
      Image URL for the device provider.
    </ResponseField>

    <ResponseField name="provider_category" type="String">
      Provider category. Indicates the third-party provider type, such as `stable`, for stable integrations, or `internal`, for internal integrations.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="location" type="Object">
  Location information for the device.

  <Expandable title="properties">
    <ResponseField name="location_name" type="String">
      Name of the device location.
    </ResponseField>

    <ResponseField name="time_zone" type="String">
      Time zone of the device location.
    </ResponseField>

    <ResponseField name="timezone" type="String" deprecated>
      **Deprecated**. Use `time_zone` instead.

      Time zone of the device location.
    </ResponseField>
  </Expandable>
</ResponseField>

## Access Codes

<ResponseField name="offline_access_codes_enabled" type="Boolean" deprecated>
  **Deprecated**. use device.can\_program\_offline\_access\_codes

  Indicates whether it is currently possible to use offline access codes for the device.
</ResponseField>

<ResponseField name="online_access_codes_enabled" type="Boolean" deprecated>
  **Deprecated**. use device.can\_program\_online\_access\_codes

  Indicates whether it is currently possible to use online access codes for the device.
</ResponseField>

<ResponseField name="supports_accessory_keypad" type="Boolean" deprecated>
  **Deprecated**. use device.properties.model.can\_connect\_accessory\_keypad

  The supports accessory keypad.
</ResponseField>

<ResponseField name="supports_offline_access_codes" type="Boolean" deprecated>
  **Deprecated**. use offline\_access\_codes\_enabled

  The supports offline access codes.
</ResponseField>

<ResponseField name="backup_access_code_pool_enabled" type="Boolean">
  Indicates whether the [backup access code pool](/low-level-apis/smart-locks/access-codes/backup-access-codes) is currently enabled for the device. To disable it, set this to `false` using [/devices/update](/api/devices/update).
</ResponseField>

<ResponseField name="code_constraints" type="Array">
  Constraints on access codes for the device. Seam represents each constraint as an object with a `constraint_type` property. Depending on the constraint type, there may also be additional properties. Note that some constraints are manufacturer- or device-specific.

  <Expandable title="properties">
    <ResponseField name="constraint_type" type="Enum (String)">
      The constraint type.
    </ResponseField>

    <ResponseField name="max_length" type="number">
      Maximum name length constraint for access codes.
    </ResponseField>

    <ResponseField name="min_length" type="number">
      Minimum name length constraint for access codes.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="has_native_entry_events" type="Boolean">
  Indicates whether the device supports native entry events.
</ResponseField>

<ResponseField name="keypad_battery" type="Object">
  Keypad battery status.

  <Expandable title="properties">
    <ResponseField name="level" type="number">
      Keypad battery charge level.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="max_active_codes_supported" type="number">
  Maximum number of active access codes that the device supports.
</ResponseField>

<ResponseField name="offline_time_frame_options" type="Array">
  Time frames that may be requested when creating an offline access code, expressed as a list of options. The caller picks one option (by matching the requested duration when the options' duration ranges do not overlap, or by `display_name` when they do) and satisfies that one option's rules. When `undefined`, any time frame works.

  <Expandable title="properties">
    <ResponseField name="display_name" type="String">
      Label for this option. For a single-option device, the product name (for example, `algoPIN` or `SmartPIN`); for a multi-option device, a label that distinguishes it (for example, `Hourly` or `Fixed start times`).
    </ResponseField>

    <ResponseField name="end_date_recurrence_rule" type="String">
      iCalendar recurrence rule (RRULE) that the end date must fall on. Constrains which calendar dates are selectable, independent of the time-of-day rules.
    </ResponseField>

    <ResponseField name="matching_start_end_time" type="Boolean">
      When `true`, the start and end must fall at the same time of day (the caller picks which). Mutually exclusive with `time_pairs`.
    </ResponseField>

    <ResponseField name="max_duration" type="String">
      Maximum duration this option covers, as an ISO 8601 duration (for example, `PT672H` or `P367D`). Omitted when there is no maximum.
    </ResponseField>

    <ResponseField name="min_duration" type="String">
      Minimum duration this option covers, as an ISO 8601 duration (for example, `PT1H` or `P29D`). Omitted when there is no minimum.
    </ResponseField>

    <ResponseField name="start_date_recurrence_rule" type="String">
      iCalendar recurrence rule (RRULE) that the start date must fall on (for example, `FREQ=MONTHLY;BYDAY=1MO,3MO`). Constrains which calendar dates are selectable, independent of the time-of-day rules.
    </ResponseField>

    <ResponseField name="time_pairs" type="Array">
      Fixed start/end time pairings the caller chooses from. Mutually exclusive with `matching_start_end_time`.

      <Expandable title="properties">
        <ResponseField name="display_name" type="String">
          Label for the start/end time pairing.
        </ResponseField>

        <ResponseField name="end_time" type="String">
          End time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`. An `end_time` earlier on the clock than `start_time` means the end falls on a later date.
        </ResponseField>

        <ResponseField name="start_time" type="String">
          Start time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="time_zone" type="String">
      IANA time zone for interpreting `time_pairs` and the date recurrence rules. Present only when the option fixes times or dates.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="online_time_frame_options" type="Array">
  Time frames that may be requested when creating an online access code, expressed as a list of options. The caller picks one option (by matching the requested duration when the options' duration ranges do not overlap, or by `display_name` when they do) and satisfies that one option's rules. When `undefined`, any time frame works.

  <Expandable title="properties">
    <ResponseField name="display_name" type="String">
      Label for this option. For a single-option device, the product name (for example, `algoPIN` or `SmartPIN`); for a multi-option device, a label that distinguishes it (for example, `Hourly` or `Fixed start times`).
    </ResponseField>

    <ResponseField name="end_date_recurrence_rule" type="String">
      iCalendar recurrence rule (RRULE) that the end date must fall on. Constrains which calendar dates are selectable, independent of the time-of-day rules.
    </ResponseField>

    <ResponseField name="matching_start_end_time" type="Boolean">
      When `true`, the start and end must fall at the same time of day (the caller picks which). Mutually exclusive with `time_pairs`.
    </ResponseField>

    <ResponseField name="max_duration" type="String">
      Maximum duration this option covers, as an ISO 8601 duration (for example, `PT672H` or `P367D`). Omitted when there is no maximum.
    </ResponseField>

    <ResponseField name="min_duration" type="String">
      Minimum duration this option covers, as an ISO 8601 duration (for example, `PT1H` or `P29D`). Omitted when there is no minimum.
    </ResponseField>

    <ResponseField name="start_date_recurrence_rule" type="String">
      iCalendar recurrence rule (RRULE) that the start date must fall on (for example, `FREQ=MONTHLY;BYDAY=1MO,3MO`). Constrains which calendar dates are selectable, independent of the time-of-day rules.
    </ResponseField>

    <ResponseField name="time_pairs" type="Array">
      Fixed start/end time pairings the caller chooses from. Mutually exclusive with `matching_start_end_time`.

      <Expandable title="properties">
        <ResponseField name="display_name" type="String">
          Label for the start/end time pairing.
        </ResponseField>

        <ResponseField name="end_time" type="String">
          End time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`. An `end_time` earlier on the clock than `start_time` means the end falls on a later date.
        </ResponseField>

        <ResponseField name="start_time" type="String">
          Start time of day as a 24-hour `HH:MM` value, interpreted in the option's `time_zone`.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="time_zone" type="String">
      IANA time zone for interpreting `time_pairs` and the date recurrence rules. Present only when the option fixes times or dates.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="supported_code_lengths" type="Array">
  Supported code lengths for access codes.
</ResponseField>

<ResponseField name="supports_backup_access_code_pool" type="Boolean">
  Indicates whether the device supports a [backup access code pool](/low-level-apis/smart-locks/access-codes/backup-access-codes).
</ResponseField>

## Hardware

<ResponseField name="accessory_keypad" type="Object">
  Accessory keypad properties and state.

  <Expandable title="properties">
    <ResponseField name="battery" type="Object">
      Keypad battery properties.

      <Expandable title="properties">
        <ResponseField name="level" type="number">
          The level.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="is_connected" type="Boolean">
      Indicates if an accessory keypad is connected to the device.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="appearance" type="Object">
  Appearance-related properties, as reported by the device.

  <Expandable title="properties">
    <ResponseField name="name" type="String">
      Name of the device as seen from the provider API and application, not settable through Seam.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="battery" type="Object">
  Represents the current status of the battery charge level.

  <Expandable title="properties">
    <ResponseField name="level" type="number">
      Battery charge level as a value between 0 and 1, inclusive.
    </ResponseField>

    <ResponseField name="status" type="Enum (String)">
      Represents the current status of the battery charge level. Values are `critical`, which indicates an extremely low level, suggesting imminent shutdown or an urgent need for charging; `low`, which signifies that the battery is under the preferred threshold and should be charged soon; `good`, which denotes a satisfactory charge level, adequate for normal use without the immediate need for recharging; and `full`, which represents a battery that is fully charged, providing the maximum duration of usage.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="battery_level" type="number">
  Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
</ResponseField>

<ResponseField name="has_direct_power" type="Boolean">
  Indicates whether the device has direct power.
</ResponseField>

<ResponseField name="image_alt_text" type="String">
  Alt text for the device image.
</ResponseField>

<ResponseField name="image_url" type="String">
  Image URL for the device.
</ResponseField>

<ResponseField name="manufacturer" type="String">
  Manufacturer of the device. When a device, such as a smart lock, is connected through a smart hub, the manufacturer of the device might be different from that of the smart hub.
</ResponseField>

<ResponseField name="serial_number" type="String">
  Serial number of the device.
</ResponseField>

## Locks

<ResponseField name="auto_lock_delay_seconds" type="number">
  The delay in seconds before the lock automatically locks after being unlocked.
</ResponseField>

<ResponseField name="auto_lock_enabled" type="Boolean">
  Indicates whether automatic locking is enabled.
</ResponseField>

<ResponseField name="door_open" type="Boolean">
  Indicates whether the door is open.
</ResponseField>

<ResponseField name="locked" type="Boolean">
  Indicates whether the lock is locked.
</ResponseField>

## Noise Sensors

<ResponseField name="currently_triggering_noise_threshold_ids" type="Array">
  Array of noise threshold IDs that are currently triggering.
</ResponseField>

<ResponseField name="noise_level_decibels" type="number">
  Indicates current noise level in decibels, if the device supports noise detection.
</ResponseField>

## Thermostats

<ResponseField name="active_thermostat_schedule" type="Object" deprecated>
  **Deprecated**. Use `active_thermostat_schedule_id` with `/thermostats/schedules/get` instead.

  Active [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).

  <Expandable title="properties">
    <ResponseField name="climate_preset_key" type="String">
      Key of the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
    </ResponseField>

    <ResponseField name="created_at" type="String (ISO 8601)">
      Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) was created.
    </ResponseField>

    <ResponseField name="device_id" type="String (UUID)">
      ID of the desired [thermostat](/capability-guides/thermostats) device.
    </ResponseField>

    <ResponseField name="ends_at" type="String (ISO 8601)">
      Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
    </ResponseField>

    <ResponseField name="errors" type="Array">
      Errors associated with the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).

      <Expandable title="properties">
        <ResponseField name="error_code" type="String">
          Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
        </ResponseField>

        <ResponseField name="message" type="String">
          Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="is_override_allowed" type="Boolean">
      Indicates whether a person at the thermostat can change the thermostat's settings after the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts.
    </ResponseField>

    <ResponseField name="max_override_period_minutes" type="number">
      Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets). See also [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
    </ResponseField>

    <ResponseField name="name" type="String">
      User-friendly name to identify the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
    </ResponseField>

    <ResponseField name="starts_at" type="String (ISO 8601)">
      Date and time at which the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
    </ResponseField>

    <ResponseField name="thermostat_schedule_id" type="String (UUID)">
      ID of the [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
    </ResponseField>

    <ResponseField name="workspace_id" type="String (UUID)">
      ID of the workspace that contains the thermostat schedule.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="active_thermostat_schedule_id" type="String (UUID)">
  ID of the active [thermostat schedule](/capability-guides/thermostats/creating-and-managing-thermostat-schedules).
</ResponseField>

<ResponseField name="available_climate_preset_modes" type="Array">
  Climate preset modes that the thermostat supports, such as "home", "away", "wake", "sleep", "occupied", and "unoccupied".
</ResponseField>

<ResponseField name="available_climate_presets" type="Array">
  Available [climate presets](/capability-guides/thermostats/creating-and-managing-climate-presets) for the thermostat.

  <Expandable title="properties">
    <ResponseField name="can_delete" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
    </ResponseField>

    <ResponseField name="can_edit" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
    </ResponseField>

    <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
    </ResponseField>

    <ResponseField name="climate_preset_key" type="String">
      Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="climate_preset_mode" type="Enum (String)">
      The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
    </ResponseField>

    <ResponseField name="cooling_set_point_celsius" type="number">
      Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="cooling_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="display_name" type="String">
      Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="ecobee_metadata" type="Object">
      Metadata specific to the Ecobee climate, if applicable.

      <Expandable title="properties">
        <ResponseField name="climate_ref" type="String">
          Reference to the Ecobee climate, if applicable.
        </ResponseField>

        <ResponseField name="is_optimized" type="Boolean">
          Indicates if the climate preset is optimized by Ecobee.
        </ResponseField>

        <ResponseField name="owner" type="Enum (String)">
          Indicates whether the climate preset is owned by the user or the system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="fan_mode_setting" type="Enum (String)">
      Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
    </ResponseField>

    <ResponseField name="heating_set_point_celsius" type="number">
      Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="heating_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="hvac_mode_setting" type="Enum (String)">
      Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
    </ResponseField>

    <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
      **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

      Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
    </ResponseField>

    <ResponseField name="name" type="String">
      User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="available_fan_mode_settings" type="Array">
  Fan mode settings that the thermostat supports.
</ResponseField>

<ResponseField name="available_hvac_mode_settings" type="Array">
  HVAC mode settings that the thermostat supports.
</ResponseField>

<ResponseField name="current_climate_setting" type="Object">
  Current climate setting.

  <Expandable title="properties">
    <ResponseField name="can_delete" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
    </ResponseField>

    <ResponseField name="can_edit" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
    </ResponseField>

    <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
    </ResponseField>

    <ResponseField name="climate_preset_key" type="String">
      Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="climate_preset_mode" type="Enum (String)">
      The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
    </ResponseField>

    <ResponseField name="cooling_set_point_celsius" type="number">
      Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="cooling_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="display_name" type="String">
      Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="ecobee_metadata" type="Object">
      Metadata specific to the Ecobee climate, if applicable.

      <Expandable title="properties">
        <ResponseField name="climate_ref" type="String">
          Reference to the Ecobee climate, if applicable.
        </ResponseField>

        <ResponseField name="is_optimized" type="Boolean">
          Indicates if the climate preset is optimized by Ecobee.
        </ResponseField>

        <ResponseField name="owner" type="Enum (String)">
          Indicates whether the climate preset is owned by the user or the system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="fan_mode_setting" type="Enum (String)">
      Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
    </ResponseField>

    <ResponseField name="heating_set_point_celsius" type="number">
      Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="heating_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="hvac_mode_setting" type="Enum (String)">
      Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
    </ResponseField>

    <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
      **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

      Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
    </ResponseField>

    <ResponseField name="name" type="String">
      User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="default_climate_setting" type="Object" deprecated>
  **Deprecated**. use fallback\_climate\_preset\_key to specify a fallback climate preset instead.

  The default climate setting.

  <Expandable title="properties">
    <ResponseField name="can_delete" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be deleted.
    </ResponseField>

    <ResponseField name="can_edit" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be edited.
    </ResponseField>

    <ResponseField name="can_use_with_thermostat_daily_programs" type="Boolean">
      Indicates whether the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) key can be programmed in a thermostat daily program.
    </ResponseField>

    <ResponseField name="climate_preset_key" type="String">
      Unique key to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="climate_preset_mode" type="Enum (String)">
      The climate preset mode for the thermostat, based on the available climate preset modes reported by the device.
    </ResponseField>

    <ResponseField name="cooling_set_point_celsius" type="number">
      Temperature to which the thermostat should cool (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="cooling_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should cool (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="display_name" type="String">
      Display name for the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>

    <ResponseField name="ecobee_metadata" type="Object">
      Metadata specific to the Ecobee climate, if applicable.

      <Expandable title="properties">
        <ResponseField name="climate_ref" type="String">
          Reference to the Ecobee climate, if applicable.
        </ResponseField>

        <ResponseField name="is_optimized" type="Boolean">
          Indicates if the climate preset is optimized by Ecobee.
        </ResponseField>

        <ResponseField name="owner" type="Enum (String)">
          Indicates whether the climate preset is owned by the user or the system.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="fan_mode_setting" type="Enum (String)">
      Desired [fan mode setting](/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`.
    </ResponseField>

    <ResponseField name="heating_set_point_celsius" type="number">
      Temperature to which the thermostat should heat (in °C). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="heating_set_point_fahrenheit" type="number">
      Temperature to which the thermostat should heat (in °F). See also [Set Points](/capability-guides/thermostats/understanding-thermostat-concepts/set-points).
    </ResponseField>

    <ResponseField name="hvac_mode_setting" type="Enum (String)">
      Desired [HVAC mode](/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
    </ResponseField>

    <ResponseField name="manual_override_allowed" type="Boolean" deprecated>
      **Deprecated**. Use 'thermostat\_schedule.is\_override\_allowed'

      Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions).
    </ResponseField>

    <ResponseField name="name" type="String">
      User-friendly name to identify the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="fallback_climate_preset_key" type="String">
  Key of the [fallback climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) for the thermostat.
</ResponseField>

<ResponseField name="fan_mode_setting" type="Enum (String)" deprecated>
  **Deprecated**. Use `current_climate_setting.fan_mode_setting` instead.

  The fan mode setting.
</ResponseField>

<ResponseField name="is_cooling" type="Boolean">
  Indicates whether the connected HVAC system is currently cooling, as reported by the thermostat.
</ResponseField>

<ResponseField name="is_fan_running" type="Boolean">
  Indicates whether the fan in the connected HVAC system is currently running, as reported by the thermostat.
</ResponseField>

<ResponseField name="is_heating" type="Boolean">
  Indicates whether the connected HVAC system is currently heating, as reported by the thermostat.
</ResponseField>

<ResponseField name="is_temporary_manual_override_active" type="Boolean">
  Indicates whether the current thermostat settings differ from the most recent active program or schedule that Seam activated. For this condition to occur, `current_climate_setting.manual_override_allowed` must also be `true`.
</ResponseField>

<ResponseField name="max_cooling_set_point_celsius" type="number">
  Maximum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °C.
</ResponseField>

<ResponseField name="max_cooling_set_point_fahrenheit" type="number">
  Maximum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °F.
</ResponseField>

<ResponseField name="max_heating_set_point_celsius" type="number">
  Maximum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °C.
</ResponseField>

<ResponseField name="max_heating_set_point_fahrenheit" type="number">
  Maximum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °F.
</ResponseField>

<ResponseField name="max_thermostat_daily_program_periods_per_day" type="number">
  Maximum number of periods that the thermostat can support per day. For example, if the thermostat supports 4 periods per day, this value is 4.
</ResponseField>

<ResponseField name="max_unique_climate_presets_per_thermostat_weekly_program" type="number">
  Maximum number of climate presets that the thermostat can support for weekly programming.
</ResponseField>

<ResponseField name="min_cooling_set_point_celsius" type="number">
  Minimum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °C.
</ResponseField>

<ResponseField name="min_cooling_set_point_fahrenheit" type="number">
  Minimum [cooling set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#cooling-set-point) in °F.
</ResponseField>

<ResponseField name="min_heating_cooling_delta_celsius" type="number">
  Minimum [temperature difference](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#minimum-heating-cooling-temperature-delta) in °C between the cooling and heating set points when in heat-cool (auto) mode.
</ResponseField>

<ResponseField name="min_heating_cooling_delta_fahrenheit" type="number">
  Minimum [temperature difference](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#minimum-heating-cooling-temperature-delta) in °F between the cooling and heating set points when in heat-cool (auto) mode.
</ResponseField>

<ResponseField name="min_heating_set_point_celsius" type="number">
  Minimum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °C.
</ResponseField>

<ResponseField name="min_heating_set_point_fahrenheit" type="number">
  Minimum [heating set point](/capability-guides/thermostats/understanding-thermostat-concepts/set-points#heating-set-point) in °F.
</ResponseField>

<ResponseField name="relative_humidity" type="number">
  Reported relative humidity, as a value between 0 and 1, inclusive.
</ResponseField>

<ResponseField name="temperature_celsius" type="number">
  Reported temperature in °C.
</ResponseField>

<ResponseField name="temperature_fahrenheit" type="number">
  Reported temperature in °F.
</ResponseField>

<ResponseField name="temperature_threshold" type="Object">
  Current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.

  <Expandable title="properties">
    <ResponseField name="lower_limit_celsius" type="number">
      Lower limit in °C within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
    </ResponseField>

    <ResponseField name="lower_limit_fahrenheit" type="number">
      Lower limit in °F within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
    </ResponseField>

    <ResponseField name="upper_limit_celsius" type="number">
      Upper limit in °C within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
    </ResponseField>

    <ResponseField name="upper_limit_fahrenheit" type="number">
      Upper limit in °F within the current [temperature threshold](/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) set for the thermostat.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="thermostat_daily_program_period_precision_minutes" type="number">
  Precision of the thermostat's period in minutes. For example, if the thermostat supports 15-minute periods, this value is 15. All values are relative to the top of the hour, so for 15 minutes, the periods would be 0, 15, 30, and 45 minutes past the hour.
</ResponseField>

<ResponseField name="thermostat_daily_programs" type="Array">
  Configured [daily programs](/capability-guides/thermostats/creating-and-managing-thermostat-programs) for the thermostat.

  <Expandable title="properties">
    <ResponseField name="created_at" type="String (ISO 8601)">
      Date and time at which the thermostat daily program was created.
    </ResponseField>

    <ResponseField name="device_id" type="String (UUID)">
      ID of the thermostat device on which the thermostat daily program is configured.
    </ResponseField>

    <ResponseField name="name" type="String">
      User-friendly name to identify the thermostat daily program.
    </ResponseField>

    <ResponseField name="periods" type="Array">
      Array of thermostat daily program periods.

      <Expandable title="properties">
        <ResponseField name="climate_preset_key" type="String">
          Key of the [climate preset](/capability-guides/thermostats/creating-and-managing-climate-presets) to activate at the `starts_at_time`.
        </ResponseField>

        <ResponseField name="starts_at_time" type="String">
          Time at which the thermostat daily program period starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="thermostat_daily_program_id" type="String (UUID)">
      ID of the thermostat daily program.
    </ResponseField>

    <ResponseField name="workspace_id" type="String (UUID)">
      ID of the workspace that contains the thermostat daily program.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="thermostat_weekly_program" type="Object">
  Current [weekly program](/capability-guides/thermostats/creating-and-managing-thermostat-programs) for the thermostat.

  <Expandable title="properties">
    <ResponseField name="created_at" type="String (ISO 8601)">
      Date and time at which the thermostat weekly program was created.
    </ResponseField>

    <ResponseField name="friday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Fridays.
    </ResponseField>

    <ResponseField name="monday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Mondays.
    </ResponseField>

    <ResponseField name="saturday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Saturdays.
    </ResponseField>

    <ResponseField name="sunday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Sundays.
    </ResponseField>

    <ResponseField name="thursday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Thursdays.
    </ResponseField>

    <ResponseField name="tuesday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Tuesdays.
    </ResponseField>

    <ResponseField name="wednesday_program_id" type="String (UUID)">
      ID of the thermostat daily program to run on Wednesdays.
    </ResponseField>
  </Expandable>
</ResponseField>

## The device\_provider Object

<ResponseExample>
  ```json Device Provider theme={null}
  {
    "can_program_online_access_codes": true,
    "can_remotely_unlock": true,
    "device_provider_name": "akiles",
    "display_name": "Akiles",
    "image_url": "https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/logos/akiles.png&q=75&w=128",
    "space_ids": [],
    "provider_categories": [
      "stable",
      "consumer_smartlocks"
    ]
  }
  ```
</ResponseExample>

***

## Properties

<ResponseField name="can_configure_auto_lock" type="Boolean">
  Indicates whether the lock supports configuring automatic locking.
</ResponseField>

<ResponseField name="can_hvac_cool" type="Boolean">
  Indicates whether the thermostat supports cooling.
</ResponseField>

<ResponseField name="can_hvac_heat" type="Boolean">
  Indicates whether the thermostat supports heating.
</ResponseField>

<ResponseField name="can_hvac_heat_cool" type="Boolean">
  Indicates whether the thermostat supports simultaneous heating and cooling.
</ResponseField>

<ResponseField name="can_program_offline_access_codes" type="Boolean">
  Indicates whether the device supports programming offline access codes.
</ResponseField>

<ResponseField name="can_program_online_access_codes" type="Boolean">
  Indicates whether the device supports programming online access codes.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_different_each_day" type="Boolean">
  Indicates whether the thermostat supports different climate programs for each day of the week.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_same_each_day" type="Boolean">
  Indicates whether the thermostat supports a single climate program applied to every day.
</ResponseField>

<ResponseField name="can_program_thermostat_programs_as_weekday_weekend" type="Boolean">
  Indicates whether the thermostat supports weekday/weekend climate programs.
</ResponseField>

<ResponseField name="can_remotely_lock" type="Boolean">
  Indicates whether the device supports remote locking.
</ResponseField>

<ResponseField name="can_remotely_unlock" type="Boolean">
  Indicates whether the device supports remote unlocking.
</ResponseField>

<ResponseField name="can_run_thermostat_programs" type="Boolean">
  Indicates whether the thermostat supports running climate programs.
</ResponseField>

<ResponseField name="can_simulate_connection" type="Boolean">
  Indicates whether the device supports simulating connection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_disconnection" type="Boolean">
  Indicates whether the device supports simulating disconnection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_hub_connection" type="Boolean">
  Indicates whether the hub supports simulating connection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_hub_disconnection" type="Boolean">
  Indicates whether the hub supports simulating disconnection in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_paid_subscription" type="Boolean">
  Indicates whether the device supports simulating a paid subscription in a sandbox.
</ResponseField>

<ResponseField name="can_simulate_removal" type="Boolean">
  Indicates whether the device supports simulating removal in a sandbox.
</ResponseField>

<ResponseField name="can_turn_off_hvac" type="Boolean">
  Indicates whether the thermostat can be turned off.
</ResponseField>

<ResponseField name="can_unlock_with_code" type="Boolean">
  Indicates whether the lock supports unlocking with an access code.
</ResponseField>

<ResponseField name="device_provider_name" type="Enum (String)">
  Name of the device provider.
</ResponseField>

<ResponseField name="display_name" type="String">
  Display name for the device provider.
</ResponseField>

<ResponseField name="image_url" type="String">
  Image URL for the device provider.
</ResponseField>

<ResponseField name="provider_categories" type="Array">
  List of provider categories to which the device provider belongs, such as `stable`, `consumer_smartlocks`, `thermostats`, and so on.
</ResponseField>
