diff --git a/docs/api/access_codes/README.md b/docs/api/access_codes/README.md index f58d8241c..d46204f60 100644 --- a/docs/api/access_codes/README.md +++ b/docs/api/access_codes/README.md @@ -2414,245 +2414,243 @@ Unable to confirm that the access code is set on Kwikset device. ## Errors -**`account_disconnected`** +**`wyze_potential_duplicate_code`** -Indicates that the account is disconnected. +Potential duplicate access code detected. --- -**`august_device_programming_delay`** +**`wyze_duplicate_code_name`** -Access code has not yet been fully moved to the device. +Duplicate access code name detected. --- -**`august_device_slots_full`** +**`smartthings_no_free_slots_available`** -All access code slots on the device are full. +No free slots available on the device. --- -**`august_lock_invalid_code_length`** +**`smartthings_failed_to_set_after_multiple_retries`** -Invalid code length for August lock. +Failed to set code after multiple retries. --- -**`august_lock_missing_keypad`** +**`smartthings_failed_to_set_access_code`** -August lock is missing a keypad. +Failed to set code on SmartThings device. --- -**`august_lock_temporarily_offline`** +**`salto_ks_user_not_subscribed`** -August lock is temporarily offline. +Salto site user is not subscribed. --- -**`bridge_disconnected`** +**`no_space_for_access_code_on_device`** -Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if the Seam Bridge executable has stopped or if the computer running the Seam Bridge executable is offline. See also [Troubleshooting Your Access Control System](../../capability-guides/access-systems/troubleshooting-your-access-control-system.md#acs_system.errors.seam_bridge_disconnected). +No space for access code on device. --- -**`code_modified_external_to_seam`** +**`kwikset_unable_to_confirm_deletion`** -Code was modified or removed externally after Seam successfully set it on the device. +Unable to confirm the deletion of the access code on Kwikset device. --- -**`device_disconnected`** +**`kwikset_unable_to_confirm_code`** -Indicates that the device is disconnected. +Unable to confirm that the access code is set on Kwikset device. --- -**`device_offline`** +**`igloohome_offline_access_code_no_variance_available`** -Indicates that the device is offline. +Lock has reached maximum amount of codes. --- -**`device_removed`** +**`igloohome_bridge_too_many_pending_jobs`** -Indicates that the device has been removed. +Igloohome bridge has too many pending jobs in the queue. --- -**`dormakaba_oracode_no_valid_user_level`** +**`igloohome_bridge_offline`** -No valid user level for Oracode. +Igloohome bridge is offline. --- -**`duplicate_code_attempt_prevented`** +**`hubitat_no_free_positions_available`** -An attempt to modify this access code was prevented. +No free positions available on the device. --- -**`duplicate_code_on_device`** +**`hubitat_device_programming_delay`** -Duplicate access code detected on device. +Access code has not yet been fully moved to the device. --- -**`failed_to_remove_from_device`** +**`failed_to_set_on_device`** -Failed to remove code from device. +Failed to set code on device. --- -**`failed_to_set_on_device`** +**`failed_to_remove_from_device`** -Failed to set code on device. +Failed to remove code from device. --- -**`hub_disconnected`** +**`duplicate_code_on_device`** -Indicates that the hub is disconnected. +Duplicate access code detected on device. --- -**`hubitat_device_programming_delay`** +**`duplicate_code_attempt_prevented`** -Access code has not yet been fully moved to the device. +An attempt to modify this access code was prevented. --- -**`hubitat_no_free_positions_available`** +**`dormakaba_oracode_no_valid_user_level`** -No free positions available on the device. +No valid user level for Oracode. --- -**`igloohome_bridge_offline`** +**`code_modified_external_to_seam`** -Igloohome bridge is offline. +Code was modified or removed externally after Seam successfully set it on the device. --- -**`igloohome_bridge_too_many_pending_jobs`** +**`august_lock_temporarily_offline`** -Igloohome bridge has too many pending jobs in the queue. +August lock is temporarily offline. --- -**`igloohome_offline_access_code_no_variance_available`** +**`august_lock_missing_keypad`** -Lock has reached maximum amount of codes. +August lock is missing a keypad. --- -**`invalid_credentials`** +**`august_lock_invalid_code_length`** -Indicates that the credentials provided were invalid. +Invalid code length for August lock. --- -**`kwikset_unable_to_confirm_code`** +**`august_device_slots_full`** -Unable to confirm that the access code is set on Kwikset device. +All access code slots on the device are full. --- -**`kwikset_unable_to_confirm_deletion`** +**`august_device_programming_delay`** -Unable to confirm the deletion of the access code on Kwikset device. +Access code has not yet been fully moved to the device. --- -**`lockly_missing_wifi_bridge`** +**`account_disconnected`** -Indicates that the Lockly lock is not connected to a Wi-Fi bridge. +Indicates that the account is disconnected. --- -**`missing_device_credentials`** +**`august_lock_missing_bridge`** -Indicates that device credentials are missing. +Indicates that the lock is not connected to a bridge. --- -**`no_space_for_access_code_on_device`** +**`august_lock_not_authorized`** -No space for access code on device. +Indicates that the user is not authorized to use the August lock. --- -**`salto_ks_user_not_subscribed`** +**`bridge_disconnected`** -Salto site user is not subscribed. +Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if the Seam Bridge executable has stopped or if the computer running the Seam Bridge executable is offline. See also [Troubleshooting Your Access Control System](../../capability-guides/access-systems/troubleshooting-your-access-control-system.md#acs_system.errors.seam_bridge_disconnected). --- -**`smartthings_failed_to_set_access_code`** +**`device_disconnected`** -Failed to set code on SmartThings device. +Indicates that the device is disconnected. --- -**`smartthings_failed_to_set_after_multiple_retries`** +**`device_offline`** -Failed to set code after multiple retries. +Indicates that the device is offline. --- -**`smartthings_no_free_slots_available`** +**`device_removed`** -No free slots available on the device. +Indicates that the device has been removed. --- -**`subscription_required`** +**`empty_backup_access_code_pool`** -Indicates that a subscription is required to connect. +Indicates that the [backup access code pool](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes) is empty. --- -**`ttlock_lock_not_paired_to_gateway`** +**`hub_disconnected`** -Indicates that the lock is not paired with a gateway. +Indicates that the hub is disconnected. --- -**`wyze_duplicate_code_name`** +**`invalid_credentials`** -Duplicate access code name detected. +Indicates that the credentials provided were invalid. --- -**`wyze_potential_duplicate_code`** +**`lockly_missing_wifi_bridge`** -Potential duplicate access code detected. +Indicates that the Lockly lock is not connected to a Wi-Fi bridge. --- -### Access Codes -**`empty_backup_access_code_pool`** +**`missing_device_credentials`** -Indicates that the [backup access code pool](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes) is empty. +Indicates that device credentials are missing. --- -### Locks -**`august_lock_missing_bridge`** +**`salto_ks_subscription_limit_exceeded`** -Indicates that the lock is not connected to a bridge. +Indicates that the Salto site user limit has been reached. --- -**`august_lock_not_authorized`** +**`subscription_required`** -Indicates that the user is not authorized to use the August lock. +Indicates that a subscription is required to connect. --- -**`salto_ks_subscription_limit_exceeded`** +**`ttlock_lock_not_paired_to_gateway`** -Indicates that the Salto site user limit has been reached. +Indicates that the lock is not paired with a gateway. --- diff --git a/docs/api/access_codes/unmanaged/README.md b/docs/api/access_codes/unmanaged/README.md index fa710ea15..da07450db 100644 --- a/docs/api/access_codes/unmanaged/README.md +++ b/docs/api/access_codes/unmanaged/README.md @@ -2258,12 +2258,24 @@ Invalid code length for August lock. --- +**`august_lock_missing_bridge`** + +Indicates that the lock is not connected to a bridge. + +--- + **`august_lock_missing_keypad`** August lock is missing a keypad. --- +**`august_lock_not_authorized`** + +Indicates that the user is not authorized to use the August lock. + +--- + **`august_lock_temporarily_offline`** August lock is temporarily offline. @@ -2318,6 +2330,12 @@ Duplicate access code detected on device. --- +**`empty_backup_access_code_pool`** + +Indicates that the [backup access code pool](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes) is empty. + +--- + **`failed_to_remove_from_device`** Failed to remove code from device. @@ -2402,6 +2420,12 @@ No space for access code on device. --- +**`salto_ks_subscription_limit_exceeded`** + +Indicates that the Salto site user limit has been reached. + +--- + **`salto_ks_user_not_subscribed`** Salto site user is not subscribed. @@ -2450,32 +2474,6 @@ Potential duplicate access code detected. --- -### Access Codes -**`empty_backup_access_code_pool`** - -Indicates that the [backup access code pool](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes) is empty. - ---- - -### Locks -**`august_lock_missing_bridge`** - -Indicates that the lock is not connected to a bridge. - ---- - -**`august_lock_not_authorized`** - -Indicates that the user is not authorized to use the August lock. - ---- - -**`salto_ks_subscription_limit_exceeded`** - -Indicates that the Salto site user limit has been reached. - ---- - ## Warnings diff --git a/docs/api/thermostats/README.md b/docs/api/thermostats/README.md index 4b249c94e..9d4a8c69b 100644 --- a/docs/api/thermostats/README.md +++ b/docs/api/thermostats/README.md @@ -23,154 +23,8 @@ The Seam API represents a thermostat as a `device` resource that includes both b --- -## The device Object - -- [Properties](./#properties) -- [device.properties](./#device.properties) -- [Errors](./#errors) -- [Warnings](./#warnings) -- [Events](./#events) -- [Endpoints](./#endpoints) - - -Represents a [device](../../core-concepts/devices/README.md) that has been connected to Seam. {% tabs %} -{% tab title="Lock Device" %} - -A lock device resource. - -```json -{ - "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", - "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" -} -``` -{% endtab %} -{% tab title="Noise Sensor Device" %} - -A noise sensor device resource. - -```json -{ - "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, - "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" -} -``` -{% endtab %} {% tab title="Thermostat Device" %} A thermostat device resource. @@ -1846,6 +1700,85 @@ Unique identifier for the Seam workspace associated with the device. +--- + +**`active_thermostat_schedule`** *Object* + +Active [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + +{% hint style="warning" %} +**Deprecated**. Use `active_thermostat_schedule_id` with `/thermostats/schedules/get` instead. +{% endhint %} + + +
+ Child Properties + + - climate_preset_key String + + Key of the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) to use for the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + + - created_at Datetime + + Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) was created. + + - device_id UUID + + ID of the desired [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) device. + + - ends_at Datetime + + Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + + - errors List of Objects + + Errors associated with the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + +- error_code String + + Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + +- message String + + Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + + + - is_override_allowed 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.md) starts. + + - max_override_period_minutes 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/README.md). See also [Specifying Manual Override Permissions](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md#specifying-manual-override-permissions). + + - name String + + User-friendly name to identify the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + + - starts_at Datetime + + Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + + - thermostat_schedule_id UUID + + ID of the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + + - workspace_id UUID + + ID of the [workspace](../../core-concepts/workspaces/README.md) that contains the thermostat schedule. + +
+ +--- + +**`active_thermostat_schedule_id`** *UUID* + +ID of the active [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). + + + + --- **`akiles_metadata`** *Object* @@ -1964,6 +1897,107 @@ Metadata for an August device. +--- + +**`available_climate_presets`** *List* *of Objects* + +Available [climate presets](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) for the thermostat. + + + +
+ Child Object Properties + + can_delete Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. + + can_edit Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. + + can_program Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. + + climate_preset_key String + + Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + + cooling_set_point_celsius Number + + Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + cooling_set_point_fahrenheit Number + + Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + display_name String + + Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + + fan_mode_setting Enum + + Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. +
+ Enum values: + + - auto + - on + - circulate +
+ + heating_set_point_celsius Number + + Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + heating_set_point_fahrenheit Number + + Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + hvac_mode_setting Enum + + Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. +
+ Enum values: + + - off + - heat + - cool + - heat_cool +
+ + manual_override_allowed Boolean + + 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.md#specifying-manual-override-permissions). + + {% hint style="warning" %} + **Deprecated**. Use 'thermostat_schedule.is_override_allowed' + {% endhint %} + + name String + + User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). +
+ +--- + +**`available_fan_mode_settings`** *List* *of Enums* + +Fan mode settings that the thermostat supports. + + + + +--- + +**`available_hvac_mode_settings`** *List* *of Enums* + +HVAC mode settings that the thermostat supports. + + + + --- **`avigilon_alta_metadata`** *Object* @@ -2049,36 +2083,206 @@ Metadata for a ControlByWeb device. --- -**`dormakaba_oracode_metadata`** *Object* +**`current_climate_setting`** *Object* -Metadata for a dormakaba Oracode device. +Current climate setting.
Child Properties - - device_id Object + - can_delete Boolean - Device ID for a dormakaba Oracode device. + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. - - door_id Number + - can_edit Boolean - Door ID for a dormakaba Oracode device. + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. - - door_is_wireless Boolean + - can_program Boolean - Indicates whether a door is wireless for a dormakaba Oracode device. + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. - - door_name String + - climate_preset_key String - Door name for a dormakaba Oracode device. + Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - iana_timezone String + - cooling_set_point_celsius Number - IANA time zone for a dormakaba Oracode device. + Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - predefined_time_slots List of Objects + - cooling_set_point_fahrenheit Number + + Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - display_name String + + Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + + - fan_mode_setting Enum + + Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. +
+ Enum values: + + - auto + - on + - circulate +
+ + - heating_set_point_celsius Number + + Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - heating_set_point_fahrenheit Number + + Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - hvac_mode_setting Enum + + Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. +
+ Enum values: + + - off + - heat + - cool + - heat_cool +
+ + - manual_override_allowed Boolean + + 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.md#specifying-manual-override-permissions). + + {% hint style="warning" %} + **Deprecated**. Use 'thermostat_schedule.is_override_allowed' + {% endhint %} + + - name String + + User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + +
+ +--- + +**`default_climate_setting`** *Object* + + +{% hint style="warning" %} +**Deprecated**. use fallback_climate_preset_key to specify a fallback climate preset instead. +{% endhint %} + + +
+ Child Properties + + - can_delete Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. + + - can_edit Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. + + - can_program Boolean + + Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. + + - climate_preset_key String + + Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + + - cooling_set_point_celsius Number + + Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - cooling_set_point_fahrenheit Number + + Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - display_name String + + Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + + - fan_mode_setting Enum + + Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. +
+ Enum values: + + - auto + - on + - circulate +
+ + - heating_set_point_celsius Number + + Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - heating_set_point_fahrenheit Number + + Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). + + - hvac_mode_setting Enum + + Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. +
+ Enum values: + + - off + - heat + - cool + - heat_cool +
+ + - manual_override_allowed Boolean + + 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.md#specifying-manual-override-permissions). + + {% hint style="warning" %} + **Deprecated**. Use 'thermostat_schedule.is_override_allowed' + {% endhint %} + + - name String + + User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). + +
+ +--- + +**`dormakaba_oracode_metadata`** *Object* + +Metadata for a dormakaba Oracode device. + + + +
+ Child Properties + + - device_id Object + + Device ID for a dormakaba Oracode device. + + - door_id Number + + Door ID for a dormakaba Oracode device. + + - door_is_wireless Boolean + + Indicates whether a door is wireless for a dormakaba Oracode device. + + - door_name String + + Door name for a dormakaba Oracode device. + + - iana_timezone String + + IANA time zone for a dormakaba Oracode device. + + - predefined_time_slots List of Objects Predefined time slots for a dormakaba Oracode device. @@ -2167,6 +2371,33 @@ Metadata for an ecobee device.
+--- + +**`fallback_climate_preset_key`** *String* + +Key of the [fallback climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset.md) for the thermostat. + + + + +--- + +**`fan_mode_setting`** *Enum* + + +{% hint style="warning" %} +**Deprecated**. Use `current_climate_setting.fan_mode_setting` instead. +{% endhint %} + +
+Enum values + +- auto +- on +- circulate +
+ + --- **`four_suites_metadata`** *Object* @@ -2317,6 +2548,42 @@ Metadata for an igloohome device. +--- + +**`is_cooling`** *Boolean* + +Indicates whether the connected HVAC system is currently cooling, as reported by the thermostat. + + + + +--- + +**`is_fan_running`** *Boolean* + +Indicates whether the fan in the connected HVAC system is currently running, as reported by the thermostat. + + + + +--- + +**`is_heating`** *Boolean* + +Indicates whether the connected HVAC system is currently heating, as reported by the thermostat. + + + + +--- + +**`is_temporary_manual_override_active`** *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`. + + + + --- **`kwikset_metadata`** *Object* @@ -2369,32 +2636,122 @@ Metadata for a Lockly device. --- -**`minut_metadata`** *Object* +**`max_cooling_set_point_celsius`** *Number* -Metadata for a Minut device. +Maximum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °C. -
- Child Properties - - device_id String - - Device ID for a Minut device. +--- - - device_name String - - Device name for a Minut device. +**`max_cooling_set_point_fahrenheit`** *Number* - - latest_sensor_values Object - - Latest sensor values for a Minut device. +Maximum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °F. - - latest_sensor_values.accelerometer_z Object - - Latest accelerometer Z-axis reading for a Minut device. - - latest_sensor_values.accelerometer_z.time String + + +--- + +**`max_heating_set_point_celsius`** *Number* + +Maximum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °C. + + + + +--- + +**`max_heating_set_point_fahrenheit`** *Number* + +Maximum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °F. + + + + +--- + +**`min_cooling_set_point_celsius`** *Number* + +Minimum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °C. + + + + +--- + +**`min_cooling_set_point_fahrenheit`** *Number* + +Minimum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °F. + + + + +--- + +**`min_heating_cooling_delta_celsius`** *Number* + +Minimum [temperature difference](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#minimum-heating-cooling-temperature-delta) in °C between the cooling and heating set points when in heat-cool (auto) mode. + + + + +--- + +**`min_heating_cooling_delta_fahrenheit`** *Number* + +Minimum [temperature difference](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#minimum-heating-cooling-temperature-delta) in °F between the cooling and heating set points when in heat-cool (auto) mode. + + + + +--- + +**`min_heating_set_point_celsius`** *Number* + +Minimum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °C. + + + + +--- + +**`min_heating_set_point_fahrenheit`** *Number* + +Minimum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °F. + + + + +--- + +**`minut_metadata`** *Object* + +Metadata for a Minut device. + + + +
+ Child Properties + + - device_id String + + Device ID for a Minut device. + + - device_name String + + Device name for a Minut device. + + - latest_sensor_values Object + + Latest sensor values for a Minut device. + + - latest_sensor_values.accelerometer_z Object + + Latest accelerometer Z-axis reading for a Minut device. + + - latest_sensor_values.accelerometer_z.time String Time of latest accelerometer Z-axis reading for a Minut device. @@ -2621,6 +2978,15 @@ Indicates whether the device is online. +--- + +**`relative_humidity`** *Number* + +Reported relative humidity, as a value between 0 and 1, inclusive. + + + + --- **`salto_ks_metadata`** *Object* @@ -2889,6 +3255,144 @@ Metadata for a Tedee device. --- +**`temperature_celsius`** *Number* + +Reported temperature in °C. + + + + +--- + +**`temperature_fahrenheit`** *Number* + +Reported temperature in °F. + + + + +--- + +**`temperature_threshold`** *Object* + +Current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. + + + +
+ Child Properties + + - lower_limit_celsius Number + + Lower limit in °C within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. + + - lower_limit_fahrenheit Number + + Lower limit in °F within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. + + - upper_limit_celsius Number + + Upper limit in °C within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. + + - upper_limit_fahrenheit Number + + Upper limit in °F within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. + +
+ +--- + +**`thermostat_daily_programs`** *List* *of Objects* + +Configured [daily programs](../../capability-guides/thermostats/creating-and-managing-thermostat-programs.md) for the thermostat. + + + +
+ Child Object Properties + + created_at Datetime + + Date and time at which the thermostat daily program was created. + + device_id UUID + + ID of the thermostat device on which the thermostat daily program is configured. + + name String + + User-friendly name to identify the thermostat daily program. + + periods List of Objects + + Array of thermostat daily program periods. + + - climate_preset_key String + + Key of the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) to activate at the `starts_at_time`. + + + - starts_at_time 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. + + + thermostat_daily_program_id UUID + + ID of the thermostat daily program. + + workspace_id UUID + + ID of the [workspace](../../core-concepts/workspaces/README.md) that contains the thermostat daily program. +
+ +--- + +**`thermostat_weekly_program`** *Object* + +Current [weekly program](../../capability-guides/thermostats/creating-and-managing-thermostat-programs.md) for the thermostat. + + + +
+ Child Properties + + - created_at Datetime + + Date and time at which the thermostat weekly program was created. + + - friday_program_id UUID + + ID of the thermostat daily program to run on Fridays. + + - monday_program_id UUID + + ID of the thermostat daily program to run on Mondays. + + - saturday_program_id UUID + + ID of the thermostat daily program to run on Saturdays. + + - sunday_program_id UUID + + ID of the thermostat daily program to run on Sundays. + + - thursday_program_id UUID + + ID of the thermostat daily program to run on Thursdays. + + - tuesday_program_id UUID + + ID of the thermostat daily program to run on Tuesdays. + + - wednesday_program_id UUID + + ID of the thermostat daily program to run on Wednesdays. + +
+ +--- + **`ttlock_metadata`** *Object* Metadata for a TTLock device. @@ -3043,660 +3547,63 @@ Metadata for a Wyze device. --- -## Thermostats -**`active_thermostat_schedule`** *Object* - -Active [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - -{% hint style="warning" %} -**Deprecated**. Use `active_thermostat_schedule_id` with `/thermostats/schedules/get` instead. -{% endhint %} - - -
- Child Properties - - - climate_preset_key String - - Key of the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) to use for the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - - - created_at Datetime - - Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) was created. - - - device_id UUID - - ID of the desired [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) device. - - - ends_at Datetime - - Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. - - - errors List of Objects - - Errors associated with the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - -- error_code String - - Unique identifier of the type of error. Enables quick recognition and categorization of the issue. - - -- message String - - Detailed description of the error. Provides insights into the issue and potentially how to rectify it. - - - - is_override_allowed 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.md) starts. - - - max_override_period_minutes 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/README.md). See also [Specifying Manual Override Permissions](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md#specifying-manual-override-permissions). - - - name String - - User-friendly name to identify the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - - - starts_at Datetime - - Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. - - - thermostat_schedule_id UUID - - ID of the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - - - workspace_id UUID - - ID of the [workspace](../../core-concepts/workspaces/README.md) that contains the thermostat schedule. - -
- ---- - -**`active_thermostat_schedule_id`** *UUID* - -ID of the active [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md). - - - - ---- - -**`available_climate_presets`** *List* *of Objects* - -Available [climate presets](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) for the thermostat. - - - -
- Child Object Properties - - can_delete Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. - - can_edit Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. - - can_program Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. - - climate_preset_key String - - Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - cooling_set_point_celsius Number - - Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - cooling_set_point_fahrenheit Number - - Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - display_name String - - Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - fan_mode_setting Enum - - Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. -
- Enum values: - - - auto - - on - - circulate -
- - heating_set_point_celsius Number - - Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - heating_set_point_fahrenheit Number - - Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - hvac_mode_setting Enum - - Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. -
- Enum values: - - - off - - heat - - cool - - heat_cool -
- - manual_override_allowed Boolean - - 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.md#specifying-manual-override-permissions). - - {% hint style="warning" %} - **Deprecated**. Use 'thermostat_schedule.is_override_allowed' - {% endhint %} - - name String - - User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). -
- ---- - -**`available_fan_mode_settings`** *List* *of Enums* - -Fan mode settings that the thermostat supports. - - - - ---- - -**`available_hvac_mode_settings`** *List* *of Enums* - -HVAC mode settings that the thermostat supports. - - - - ---- - -**`current_climate_setting`** *Object* - -Current climate setting. - - - -
- Child Properties - - - can_delete Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. - - - can_edit Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. - - - can_program Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. - - - climate_preset_key String - - Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - - cooling_set_point_celsius Number - - Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - cooling_set_point_fahrenheit Number - - Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - display_name String - - Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - - fan_mode_setting Enum - - Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. -
- Enum values: - - - auto - - on - - circulate -
- - - heating_set_point_celsius Number - - Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - heating_set_point_fahrenheit Number - - Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - hvac_mode_setting Enum - - Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. -
- Enum values: - - - off - - heat - - cool - - heat_cool -
- - - manual_override_allowed Boolean - - 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.md#specifying-manual-override-permissions). - - {% hint style="warning" %} - **Deprecated**. Use 'thermostat_schedule.is_override_allowed' - {% endhint %} - - - name String - - User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - -
- ---- - -**`default_climate_setting`** *Object* - - -{% hint style="warning" %} -**Deprecated**. use fallback_climate_preset_key to specify a fallback climate preset instead. -{% endhint %} - - -
- Child Properties - - - can_delete Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted. - - - can_edit Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited. - - - can_program Boolean - - Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be programmed in a thermostat daily program. - - - climate_preset_key String - - Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - - cooling_set_point_celsius Number - - Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - cooling_set_point_fahrenheit Number - - Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - display_name String - - Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - - - fan_mode_setting Enum - - Desired [fan mode setting](https://docs.seam.co/latest/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. -
- Enum values: - - - auto - - on - - circulate -
- - - heating_set_point_celsius Number - - Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - heating_set_point_fahrenheit Number - - Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md). - - - hvac_mode_setting Enum - - Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`. -
- Enum values: - - - off - - heat - - cool - - heat_cool -
- - - manual_override_allowed Boolean - - 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.md#specifying-manual-override-permissions). - - {% hint style="warning" %} - **Deprecated**. Use 'thermostat_schedule.is_override_allowed' - {% endhint %} - - - name String - - User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md). - -
- ---- - -**`fallback_climate_preset_key`** *String* - -Key of the [fallback climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset.md) for the thermostat. - - - - ---- - -**`fan_mode_setting`** *Enum* - - -{% hint style="warning" %} -**Deprecated**. Use `current_climate_setting.fan_mode_setting` instead. -{% endhint %} - -
-Enum values - -- auto -- on -- circulate -
- - ---- - -**`is_cooling`** *Boolean* - -Indicates whether the connected HVAC system is currently cooling, as reported by the thermostat. - - - - ---- - -**`is_fan_running`** *Boolean* - -Indicates whether the fan in the connected HVAC system is currently running, as reported by the thermostat. - - - - ---- - -**`is_heating`** *Boolean* - -Indicates whether the connected HVAC system is currently heating, as reported by the thermostat. - - - - ---- - -**`is_temporary_manual_override_active`** *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`. - - - - ---- - -**`max_cooling_set_point_celsius`** *Number* - -Maximum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °C. - - - - ---- - -**`max_cooling_set_point_fahrenheit`** *Number* - -Maximum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °F. - - - - ---- - -**`max_heating_set_point_celsius`** *Number* - -Maximum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °C. - - - - ---- - -**`max_heating_set_point_fahrenheit`** *Number* - -Maximum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °F. - - - - ---- - -**`min_cooling_set_point_celsius`** *Number* - -Minimum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °C. - - - - ---- - -**`min_cooling_set_point_fahrenheit`** *Number* - -Minimum [cooling set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#cooling-set-point) in °F. - - - - ---- - -**`min_heating_cooling_delta_celsius`** *Number* - -Minimum [temperature difference](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#minimum-heating-cooling-temperature-delta) in °C between the cooling and heating set points when in heat-cool (auto) mode. - - - - ---- - -**`min_heating_cooling_delta_fahrenheit`** *Number* - -Minimum [temperature difference](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#minimum-heating-cooling-temperature-delta) in °F between the cooling and heating set points when in heat-cool (auto) mode. +## Errors +**`auxiliary_heat_running`** +Indicates that the auxiliary heat is running. --- -**`min_heating_set_point_celsius`** *Number* - -Minimum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °C. - - +**`ttlock_lock_not_paired_to_gateway`** +Indicates that the lock is not paired with a gateway. --- -**`min_heating_set_point_fahrenheit`** *Number* - -Minimum [heating set point](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md#heating-set-point) in °F. - - +**`subscription_required`** +Indicates that a subscription is required to connect. --- -**`relative_humidity`** *Number* - -Reported relative humidity, as a value between 0 and 1, inclusive. - - +**`missing_device_credentials`** +Indicates that device credentials are missing. --- -**`temperature_celsius`** *Number* - -Reported temperature in °C. - - +**`lockly_missing_wifi_bridge`** +Indicates that the Lockly lock is not connected to a Wi-Fi bridge. --- -**`temperature_fahrenheit`** *Number* - -Reported temperature in °F. - - +**`hub_disconnected`** +Indicates that the hub is disconnected. --- -**`temperature_threshold`** *Object* - -Current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. - - - -
- Child Properties - - - lower_limit_celsius Number - - Lower limit in °C within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. - - - lower_limit_fahrenheit Number - - Lower limit in °F within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. - - - upper_limit_celsius Number - - Upper limit in °C within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. - - - upper_limit_fahrenheit Number - - Upper limit in °F within the current [temperature threshold](../../capability-guides/thermostats/setting-and-monitoring-temperature-thresholds.md) set for the thermostat. +**`device_removed`** -
+Indicates that the device has been removed. --- -**`thermostat_daily_programs`** *List* *of Objects* - -Configured [daily programs](../../capability-guides/thermostats/creating-and-managing-thermostat-programs.md) for the thermostat. - - - -
- Child Object Properties - - created_at Datetime - - Date and time at which the thermostat daily program was created. - - device_id UUID - - ID of the thermostat device on which the thermostat daily program is configured. - - name String - - User-friendly name to identify the thermostat daily program. - - periods List of Objects - - Array of thermostat daily program periods. - - - climate_preset_key String - - Key of the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) to activate at the `starts_at_time`. - - - - starts_at_time 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. - - - thermostat_daily_program_id UUID - - ID of the thermostat daily program. +**`device_offline`** - workspace_id UUID - - ID of the [workspace](../../core-concepts/workspaces/README.md) that contains the thermostat daily program. -
+Indicates that the device is offline. --- -**`thermostat_weekly_program`** *Object* - -Current [weekly program](../../capability-guides/thermostats/creating-and-managing-thermostat-programs.md) for the thermostat. - - - -
- Child Properties - - - created_at Datetime - - Date and time at which the thermostat weekly program was created. - - - friday_program_id UUID - - ID of the thermostat daily program to run on Fridays. - - - monday_program_id UUID - - ID of the thermostat daily program to run on Mondays. - - - saturday_program_id UUID - - ID of the thermostat daily program to run on Saturdays. - - - sunday_program_id UUID - - ID of the thermostat daily program to run on Sundays. - - - thursday_program_id UUID - - ID of the thermostat daily program to run on Thursdays. - - - tuesday_program_id UUID - - ID of the thermostat daily program to run on Tuesdays. - - - wednesday_program_id UUID - - ID of the thermostat daily program to run on Wednesdays. +**`device_disconnected`** -
+Indicates that the device is disconnected. --- - -## Errors - **`account_disconnected`** Indicates that the account is disconnected. @@ -3709,67 +3616,12 @@ Indicates that the Seam API cannot communicate with [Seam Bridge](../../capabili --- -**`device_disconnected`** - -Indicates that the device is disconnected. - ---- - -**`device_offline`** - -Indicates that the device is offline. - ---- - -**`device_removed`** - -Indicates that the device has been removed. - ---- - -**`hub_disconnected`** - -Indicates that the hub is disconnected. - ---- - **`invalid_credentials`** Indicates that the credentials provided were invalid. --- -**`lockly_missing_wifi_bridge`** - -Indicates that the Lockly lock is not connected to a Wi-Fi bridge. - ---- - -**`missing_device_credentials`** - -Indicates that device credentials are missing. - ---- - -**`subscription_required`** - -Indicates that a subscription is required to connect. - ---- - -**`ttlock_lock_not_paired_to_gateway`** - -Indicates that the lock is not paired with a gateway. - ---- - -### Thermostats -**`auxiliary_heat_running`** - -Indicates that the auxiliary heat is running. - ---- - ## Warnings @@ -3797,6 +3649,12 @@ Indicates that Seam detected that the Lockly device does not have a time zone co --- +**`nest_thermostat_in_manual_eco_mode`** + +Indicates that the Nest thermostat is in manual eco mode. + +--- + **`salto_ks_office_mode`** Indicates that the Salto KS lock is in Office Mode. Access Codes will not unlock doors. @@ -3821,6 +3679,12 @@ Indicates that a scheduled maintenance window has been detected. --- +**`temperature_threshold_exceeded`** + +Indicates that the temperature threshold has been exceeded. + +--- + **`third_party_integration_detected`** Indicates that a third-party integration has been detected. @@ -3839,19 +3703,6 @@ Indicates that the Wyze Lock is not connected to a gateway. --- -### Thermostats -**`nest_thermostat_in_manual_eco_mode`** - -Indicates that the Nest thermostat is in manual eco mode. - ---- - -**`temperature_threshold_exceeded`** - -Indicates that the temperature threshold has been exceeded. - ---- - ## Events diff --git a/src/layouts/partials/api-resource.hbs b/src/layouts/partials/api-resource.hbs index b90d0ac9b..6f88817f9 100644 --- a/src/layouts/partials/api-resource.hbs +++ b/src/layouts/partials/api-resource.hbs @@ -1,3 +1,4 @@ +{{#unless hidePreamble}} ## The {{name}} Object - [Properties](./#properties) @@ -13,6 +14,7 @@ {{description}} {{/if}} +{{/unless}} {{#if resourceSamples.length}} {% tabs %} diff --git a/src/lib/layout/api-endpoint.ts b/src/lib/layout/api-endpoint.ts index 4a364f79d..c1000f0dc 100644 --- a/src/lib/layout/api-endpoint.ts +++ b/src/lib/layout/api-endpoint.ts @@ -168,6 +168,7 @@ export function setEndpointLayoutContext( file.response.actionAttempt = { name: actionAttempt.actionAttemptType, description: actionAttempt.description, + hidePreamble: false, propertyGroups: groupProperties( actionAttempt.properties.filter( ({ isUndocumented }) => !isUndocumented, diff --git a/src/lib/layout/api-route.ts b/src/lib/layout/api-route.ts index 48aef14a2..c15d0ff51 100644 --- a/src/lib/layout/api-route.ts +++ b/src/lib/layout/api-route.ts @@ -75,6 +75,7 @@ export interface ApiRouteResource { propertyGroups: ApiRoutePropertyGroup[] legacyPropertyGroups?: ApiRoutePropertyGroup[] events: ApiRouteEvent[] + hidePreamble: boolean } interface ApiRouteVariantGroup { @@ -86,16 +87,17 @@ interface ApiRouteVariantGroup { interface ApiRouteVariant { name: string description: string + parentResouceType: string | null } type ApiRouteEndpoint = Pick -export function setApiRouteLayoutContext( +export const setApiRouteLayoutContext = ( file: Partial, route: Route, blueprint: Blueprint, pathMetadata: PathMetadata, -): void { +): void => { const metadata = pathMetadata[route.path] if (metadata == null) { throw new Error(`Missing path metadata for ${route.path}`) @@ -146,9 +148,13 @@ export function setApiRouteLayoutContext( const warningsProp = resource.properties.find((p) => p.name === 'warnings') const errorsProp = resource.properties.find((p) => p.name === 'errors') const warningGroups = - warningsProp != null ? groupVariants(warningsProp, groupOptions) : [] + warningsProp != null + ? groupVariants(warningsProp, groupOptions, resourceType, resourceTypes) + : [] const errorGroups = - errorsProp != null ? groupVariants(errorsProp, groupOptions) : [] + errorsProp != null + ? groupVariants(errorsProp, groupOptions, resourceType, resourceTypes) + : [] const allProperties = resource.properties.filter( ({ isUndocumented }) => !isUndocumented, @@ -190,8 +196,23 @@ export function setApiRouteLayoutContext( ...(legacyPropertyGroups == null ? {} : { legacyPropertyGroups }), errorGroups, warningGroups, + hidePreamble: route.path !== resource.routePath, events: eventsByRoutePath.get(resource.routePath) ?? [], - resourceSamples: resource.resourceSamples.map(mapResourceSample), + resourceSamples: resource.resourceSamples + .filter(({ title }) => { + if (groupOptions.include != null) { + return groupOptions.include.some((x) => + title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), + ) + } + if (groupOptions.exclude != null) { + return !groupOptions.exclude.some((x) => + title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), + ) + } + return true + }) + .map(mapResourceSample), }) } } @@ -205,6 +226,8 @@ const groupVariants = ( include?: string[] | undefined exclude?: string[] | undefined }, + resourceType: string, + resourceTypes: string[], ): ApiRouteVariantGroup[] => { if (!isDiscriminatedListProperty(property)) { return [] @@ -213,17 +236,20 @@ const groupVariants = ( const getApiRouteVariants = ( variantGroupKey: string | null, ): ApiRouteVariant[] => { - return collectResourceVariants({ - ...property, - variants: property.variants.filter( - (v) => v.variantGroupKey === variantGroupKey, - ), - }).sort((a, b) => { + return collectResourceVariants( + { + ...property, + variants: property.variants.filter( + (v) => v.variantGroupKey === variantGroupKey, + ), + }, + resourceTypes, + ).sort((a, b) => { return a.name.localeCompare(b.name) }) } - return property.variantGroups + const groups = property.variantGroups .reduce( (groups, variantGroup) => [ ...groups, @@ -256,6 +282,40 @@ const groupVariants = ( if (a.variantGroupKey === null || b.name == null) return 1 return a.name.localeCompare(b.name) }) + + if (include != null) { + const variants = groups + .flatMap((g) => g.variants) + .sort((a, b) => { + if (a.parentResouceType === null && b.parentResouceType === null) { + return a.name.localeCompare(b.name) + } + if (a.parentResouceType === resourceType) { + return -1 + } + if (b.parentResouceType === resourceType) { + return 1 + } + if (a.parentResouceType === null) { + return -1 + } + if (b.parentResouceType === null) { + return 1 + } + if (a.parentResouceType !== b.parentResouceType) { + return a.parentResouceType.localeCompare(b.parentResouceType) + } + return a.name.localeCompare(b.name) + }) + return [ + { + variantGroupKey: null, + variants, + }, + ] + } + + return groups } const isDiscriminatedListProperty = ( @@ -270,6 +330,7 @@ const isDiscriminatedListProperty = ( const collectResourceVariants = ( property: DiscriminatedListProperty, + resourceTypes: string[], ): ApiRouteVariant[] => { return property.variants .map((variant) => { @@ -284,6 +345,10 @@ const collectResourceVariants = ( return { name: discriminator.values[0].name, description: variant.description, + parentResouceType: getParentVariantResourceType( + variant.properties.map(({ name }) => name), + resourceTypes, + ), } }) .filter((variant): variant is ApiRouteVariant => variant !== null) @@ -310,7 +375,7 @@ export const groupProperties = ( return a.name.localeCompare(b.name) }) - return propertyGroups + const groups = propertyGroups .reduce( (groups, propertyGroup) => [ ...groups, @@ -343,6 +408,20 @@ export const groupProperties = ( if (b.name == null) return 1 return a.name.localeCompare(b.name) }) + + if (include != null) { + const properties = groups + .flatMap((g) => g.properties) + .sort((a, b) => a.name.localeCompare(b.name)) + return [ + { + propertyGroupKey: null, + properties, + }, + ] + } + + return groups } const groupEventsByRoutePath = ( @@ -371,10 +450,10 @@ const groupEventsByRoutePath = ( const getFirstParagraph = (text: string): string => text.split('\n\n').at(0) ?? text -function findEnumProperty( +const findEnumProperty = ( properties: Property[], name: string, -): EnumProperty | null { +): EnumProperty | null => { const prop = properties.find( (p) => p.name === name && p.format === 'enum', ) as EnumProperty | undefined @@ -491,10 +570,10 @@ const flattenObjectProperties = ( return results } -function addLinkTargetsToProperties( +const addLinkTargetsToProperties = ( properties: ApiRouteProperty[] | undefined, sections: { hasErrors: boolean; hasWarnings: boolean }, -): void { +): void => { if (properties == null) return const linkableProperties: Record = { errors: sections.hasErrors ? './#errors' : undefined, @@ -527,3 +606,15 @@ const mapResourceSample = (sample: ResourceSample): ResourceSampleContext => { resourceDataSyntax: jsonSample.resource_data_syntax, } } + +const getParentVariantResourceType = ( + propertyKeys: string[], + resourceTypes: string[], +): string | null => { + const keyMap = Object.fromEntries( + resourceTypes.map((k) => [`is_${k}_error`, k]), + ) + const key = propertyKeys.find((k) => Object.keys(keyMap).includes(k)) + if (key == null) return null + return keyMap[key] ?? null +}