diff --git a/docs/api/_report.md b/docs/api/_report.md
index 327adc94d..9799453c5 100644
--- a/docs/api/_report.md
+++ b/docs/api/_report.md
@@ -4,25 +4,9 @@
### Routes
-- `/access_codes`
-- `/access_codes/simulate`
-- `/access_codes/unmanaged`
- `/action_attempts`
- `/bridges`
-- `/client_sessions`
-- `/connect_webviews`
-- `/connected_accounts`
-- `/devices`
-- `/devices/simulate`
- `/devices/unmanaged`
-- `/events`
-- `/locks`
-- `/networks`
-- `/noise_sensors`
-- `/noise_sensors/noise_thresholds`
-- `/noise_sensors/simulate`
-- `/webhooks`
-- `/workspaces`
### Endpoints
diff --git a/docs/api/access_codes/README.md b/docs/api/access_codes/README.md
new file mode 100644
index 000000000..3772dc078
--- /dev/null
+++ b/docs/api/access_codes/README.md
@@ -0,0 +1,3365 @@
+# Access Codes
+
+## `access_code`
+
+Represents a smart lock [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate.
+
+Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the `type` property of the access code. Ongoing codes display as `ongoing`, whereas time-bound codes are labeled `time_bound`.
+
+In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code.
+
+### `access_code_id`
+
+Format: `UUID`
+
+Unique identifier for the access code.
+
+---
+
+### `code`
+
+Format: `String`
+
+Code used for access. Typically, a numeric or alphanumeric string.
+
+---
+
+### `common_code_key`
+
+Format: `String`
+
+Unique identifier for a group of access codes that share the same code.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the access code was created.
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device associated with the access code.
+
+---
+
+### `ends_at`
+
+Format: `Datetime`
+
+Date and time after which the time-bound access code becomes inactive.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Errors associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_failed_to_set_after_multiple_retries
+
+Failed to set code after multiple retries.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_after_multiple_retries`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_no_free_slots_available
+
+No free slots available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_no_free_slots_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_set_on_device
+
+Failed to set code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_set_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_remove_from_device
+
+Failed to remove code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_remove_from_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_on_device
+
+Duplicate access code detected on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_attempt_prevented
+
+An attempt to modify this access code was prevented.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_attempt_prevented`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+no_space_for_access_code_on_device
+
+No space for access code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `no_space_for_access_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_too_many_pending_jobs
+
+Igloohome bridge has too many pending jobs in the queue.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_too_many_pending_jobs`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_offline
+
+Igloohome bridge is offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_offline_access_code_no_variance_available
+
+Lock has reached maximum amount of codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_offline_access_code_no_variance_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_deletion
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_deletion`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_invalid_code_length
+
+Invalid code length for August lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_invalid_code_length`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_slots_full
+
+All access code slots on the device are full.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_slots_full`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_missing_keypad
+
+August lock is missing a keypad.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_keypad`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+salto_ks_user_not_subscribed
+
+Salto site user is not subscribed.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_user_not_subscribed`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_no_free_positions_available
+
+No free positions available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_no_free_positions_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_duplicate_code_name
+
+Duplicate access code name detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_duplicate_code_name`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_potential_duplicate_code
+
+Potential duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_potential_duplicate_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+dormakaba_oracode_no_valid_user_level
+
+No valid user level for Oracode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `dormakaba_oracode_no_valid_user_level`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_backup`
+
+Format: `Boolean`
+
+Indicates whether the access code is a backup code.
+
+---
+
+### `is_backup_access_code_available`
+
+Format: `Boolean`
+
+Indicates whether a backup access code is available for use if the primary access code is lost or compromised.
+
+---
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+
+Indicates whether changes to the access code from external sources are permitted.
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates whether Seam manages the access code.
+
+---
+
+### `is_offline_access_code`
+
+Format: `Boolean`
+
+Indicates whether the access code is intended for use in offline scenarios. If `true`, this code can be created on a device without a network connection.
+
+---
+
+### `is_one_time_use`
+
+Format: `Boolean`
+
+Indicates whether the access code can only be used once. If `true`, the code becomes invalid after the first use.
+
+---
+
+### `is_scheduled_on_device`
+
+Format: `Boolean`
+
+Indicates whether the code is set on the device according to a preconfigured schedule.
+
+---
+
+### `is_waiting_for_code_assignment`
+
+Format: `Boolean`
+
+Indicates whether the access code is waiting for a code assignment.
+
+---
+
+### `name`
+
+Format: `String`
+
+Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes.
+
+---
+
+### `pulled_backup_access_code_id`
+
+Format: `UUID`
+
+Identifier of the pulled backup access code. Used to associate the pulled backup access code with the original access code.
+
+---
+
+### `starts_at`
+
+Format: `Datetime`
+
+Date and time at which the time-bound access code becomes active.
+
+---
+
+### `status`
+
+Format: `Enum`
+
+Current status of the access code within the operational lifecycle. Values are `setting`, a transitional phase that indicates that the code is being configured or activated; `set`, which indicates that the code is active and operational; `unset`, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; `removing`, which indicates a transitional period in which the code is being deleted or made inactive; and `unknown`, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting.
+
+Possible enum values:
+- `setting`
+- `set`
+- `unset`
+- `removing`
+- `unknown`
+
+---
+
+### `type`
+
+Format: `Enum`
+
+Nature of the access code. Values are `ongoing` for access codes that are active continuously until deactivated manually or `time_bound` for access codes that have a specific duration.
+
+Possible enum values:
+- `time_bound`
+- `ongoing`
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Warnings associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+
+
+schlage_detected_duplicate
+
+Duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_detected_duplicate`
+
+
+
+schlage_creation_outage
+
+Received an error when attempting to create this code.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_creation_outage`
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+
+
+delay_in_setting_on_device
+
+Delay in setting code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_setting_on_device`
+
+
+
+delay_in_removing_from_device
+
+Delay in removing code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_removing_from_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected that may cause access codes to fail.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+
+
+igloo_algopin_must_be_used_within_24_hours
+
+Algopins must be used within 24 hours.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloo_algopin_must_be_used_within_24_hours`
+
+
+
+management_transferred
+
+Management was transferred to another workspace.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `management_transferred`
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+
+
+---
+
+## Errors
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `smartthings_failed_to_set_after_multiple_retries`
+
+Failed to set code after multiple retries.
+
+---
+
+### `smartthings_no_free_slots_available`
+
+No free slots available on the device.
+
+---
+
+### `failed_to_set_on_device`
+
+Failed to set code on device.
+
+---
+
+### `failed_to_remove_from_device`
+
+Failed to remove code from device.
+
+---
+
+### `duplicate_code_on_device`
+
+Duplicate access code detected on device.
+
+---
+
+### `duplicate_code_attempt_prevented`
+
+An attempt to modify this access code was prevented.
+
+---
+
+### `no_space_for_access_code_on_device`
+
+No space for access code on device.
+
+---
+
+### `igloohome_bridge_too_many_pending_jobs`
+
+Igloohome bridge has too many pending jobs in the queue.
+
+---
+
+### `igloohome_bridge_offline`
+
+Igloohome bridge is offline.
+
+---
+
+### `igloohome_offline_access_code_no_variance_available`
+
+Lock has reached maximum amount of codes.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+### `kwikset_unable_to_confirm_deletion`
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `august_lock_invalid_code_length`
+
+Invalid code length for August lock.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_device_slots_full`
+
+All access code slots on the device are full.
+
+---
+
+### `august_lock_missing_keypad`
+
+August lock is missing a keypad.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `salto_ks_user_not_subscribed`
+
+Salto site user is not subscribed.
+
+---
+
+### `hubitat_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `hubitat_no_free_positions_available`
+
+No free positions available on the device.
+
+---
+
+### `wyze_duplicate_code_name`
+
+Duplicate access code name detected.
+
+---
+
+### `wyze_potential_duplicate_code`
+
+Potential duplicate access code detected.
+
+---
+
+### `dormakaba_oracode_no_valid_user_level`
+
+No valid user level for Oracode.
+
+---
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `schlage_detected_duplicate`
+
+Duplicate access code detected.
+
+---
+
+### `schlage_creation_outage`
+
+Received an error when attempting to create this code.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `delay_in_setting_on_device`
+
+Delay in setting code on device.
+
+---
+
+### `delay_in_removing_from_device`
+
+Delay in removing code from device.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected that may cause access codes to fail.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `igloo_algopin_must_be_used_within_24_hours`
+
+Algopins must be used within 24 hours.
+
+---
+
+### `management_transferred`
+
+Management was transferred to another workspace.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+## Endpoints
+
+### [`/access_codes/create`](./create.md)
+
+Creates a new [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/create_multiple`](./create_multiple.md)
+
+Creates new [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that share a common code across multiple devices.
+### [`/access_codes/delete`](./delete.md)
+
+Deletes an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/get`](./get.md)
+
+Returns a specified [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/list`](./list.md)
+
+Returns a list of all [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/pull_backup_access_code`](./pull_backup_access_code.md)
+
+Retrieves a backup access code for an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes).
+### [`/access_codes/report_device_constraints`](./report_device_constraints.md)
+
+Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices.
+### [`/access_codes/update`](./update.md)
+
+Updates a specified active or upcoming [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/update_multiple`](./update_multiple.md)
+
+Updates [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that share a common code across multiple devices.
+
+---
+
+## Events
+
+### `access_code.created`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was created.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.created`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.changed`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was changed.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.scheduled_on_device`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was [scheduled natively](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#native-scheduling) on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+code Format: String
+
+Code for the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.scheduled_on_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.set_on_device`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was set on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+code Format: String
+
+Code for the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.set_on_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.removed_from_device`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was removed from a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.removed_from_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.delay_in_setting_on_device`
+
+There was an unusually long delay in setting an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.delay_in_setting_on_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.failed_to_set_on_device`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) failed to be set on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.failed_to_set_on_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.deleted`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was deleted.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+code Format: String
+
+Code for the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.delay_in_removing_from_device`
+
+There was an unusually long delay in removing an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) from a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.delay_in_removing_from_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.failed_to_remove_from_device`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) failed to be removed from a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.failed_to_remove_from_device`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.modified_external_to_seam`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was modified outside of Seam.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.modified_external_to_seam`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.deleted_external_to_seam`
+
+An [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) was deleted outside of Seam.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.deleted_external_to_seam`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.backup_access_code_pulled`
+
+A [backup access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes) was pulled from the backup access code pool and set on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+backup_access_code_id Format: String
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.backup_access_code_pulled`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.unmanaged.converted_to_managed`
+
+An [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) was converted successfully to a managed access code.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.unmanaged.converted_to_managed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.unmanaged.failed_to_convert_to_managed`
+
+An [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) failed to be converted to a managed access code.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.unmanaged.failed_to_convert_to_managed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.unmanaged.created`
+
+An [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) was created on a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.unmanaged.created`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `access_code.unmanaged.removed`
+
+An [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) was removed from a device.
+
+
+
+access_code_id Format: UUID
+
+ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the [device](../../core-concepts/devices/README.md).
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `access_code.unmanaged.removed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/access_codes/create.md b/docs/api/access_codes/create.md
new file mode 100644
index 000000000..6cf7bed1e
--- /dev/null
+++ b/docs/api/access_codes/create.md
@@ -0,0 +1,220 @@
+# Create an Access Code
+
+```
+POST /access_codes/create ⇒ { access_code }
+```
+
+Creates a new [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `device_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the device for which to create the new access code.
+
+***
+
+### `allow_external_modification`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `attempt_for_offline_device`
+
+Format: `Boolean`
+Required: No
+
+***
+
+### `code`
+
+Format: `String`
+Required: No
+
+Code to be used for access.
+
+***
+
+### `common_code_key`
+
+Format: `String`
+Required: No
+
+Key to identify access codes that should have the same code. Any two access codes with the same `common_code_key` are guaranteed to have the same `code`. See also [Creating and Updating Multiple Linked Access Codes](../../capability-guides/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes.md).
+
+***
+
+### `ends_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
+
+***
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `is_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the access code is an [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes).
+
+***
+
+### `is_one_time_use`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) is a single-use access code.
+
+***
+
+### `max_time_rounding`
+
+Format: `Enum`
+Required: No
+
+Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`.
+
+Possible enum values:
+- `1hour`
+- `1day`
+- `1h`
+- `1d`
+
+***
+
+### `name`
+
+Format: `String`
+Required: No
+
+Name of the new access code.
+
+***
+
+### `prefer_native_scheduling`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [native scheduling](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`.
+
+***
+
+### `preferred_code_length`
+
+Format: `Number`
+Required: No
+
+Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length.
+
+***
+
+### `starts_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+***
+
+### `use_backup_access_code_pool`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether to use a [backup access code pool](https://docs.seam.co/latest/core-concepts/access-codes#backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](../../api-clients/access_codes/pull_backup_access_code.md).
+
+***
+
+### `use_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+***
+
+## Return Type
+
+[access\_code](./)
+
+### `CREATE_ACCESS_CODE`
+
+#### `action_attempt_id`
+
+Format: `UUID`
+
+ID of the action attempt.
+
+---
+
+#### `action_type`
+
+Format: `Enum`
+
+Value: `CREATE_ACCESS_CODE`
+
+---
+
+#### `error`
+
+Format: `Object`
+
+
+
+message Format: String
+
+
+
+
+type Format: String
+
+
+---
+
+#### `result`
+
+Format: `Object`
+
+This object has no properties.
+
+---
+
+#### `status`
+
+Format: `Enum`
+
+Possible enum values:
+- `success`
+- `pending`
+- `error`
+
+---
+
diff --git a/docs/api/access_codes/create_multiple.md b/docs/api/access_codes/create_multiple.md
new file mode 100644
index 000000000..2641bc0e3
--- /dev/null
+++ b/docs/api/access_codes/create_multiple.md
@@ -0,0 +1,179 @@
+# Create Multiple Linked Access Codes
+
+```
+PUT /access_codes/create_multiple ⇒ { access_codes: [access_code, …] }
+```
+
+Creates new [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that share a common code across multiple devices.
+
+Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock.
+
+If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a `common_code_key`. That is, `common_code_key` remains null for these access codes.
+
+If you want to change these access codes that are not linked by a `common_code_key`, you cannot use `/access_codes/update_multiple`. However, you can update each of these access codes individually, using `/access_codes/update`.
+
+See also [Creating and Updating Multiple Linked Access Codes](../../capability-guides/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes.md).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `device_ids`
+
+Format: `List`
+Item format: `UUID`
+Required: Yes
+
+IDs of the devices for which to create the new access codes.
+
+***
+
+### `allow_external_modification`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `attempt_for_offline_device`
+
+Format: `Boolean`
+Required: No
+
+***
+
+### `behavior_when_code_cannot_be_shared`
+
+Format: `Enum`
+Required: No
+
+Desired behavior if any device cannot share a code. If `throw` (default), no access codes will be created if any device cannot share a code. If `create_random_code`, a random code will be created on devices that cannot share a code.
+
+Possible enum values:
+- `throw`
+- `create_random_code`
+
+***
+
+### `code`
+
+Format: `String`
+Required: No
+
+Code to be used for access.
+
+***
+
+### `ends_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
+
+***
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `is_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the access code is an [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes).
+
+***
+
+### `is_one_time_use`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) is a single-use access code.
+
+***
+
+### `max_time_rounding`
+
+Format: `Enum`
+Required: No
+
+Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`.
+
+Possible enum values:
+- `1hour`
+- `1day`
+- `1h`
+- `1d`
+
+***
+
+### `name`
+
+Format: `String`
+Required: No
+
+Name of the new access code.
+
+***
+
+### `prefer_native_scheduling`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [native scheduling](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`.
+
+***
+
+### `preferred_code_length`
+
+Format: `Number`
+Required: No
+
+Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length.
+
+***
+
+### `starts_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+***
+
+### `use_backup_access_code_pool`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether to use a [backup access code pool](https://docs.seam.co/latest/core-concepts/access-codes#backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](../../api-clients/access_codes/pull_backup_access_code.md).
+
+***
+
+### `use_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+***
+
+## Return Type
+
+Array<[access\_code](./)>
diff --git a/docs/api/access_codes/delete.md b/docs/api/access_codes/delete.md
new file mode 100644
index 000000000..b6a926365
--- /dev/null
+++ b/docs/api/access_codes/delete.md
@@ -0,0 +1,38 @@
+# Delete an Access Code
+
+```
+POST /access_codes/delete ⇒ void
+```
+
+Deletes an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the access code to delete.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: No
+
+ID of the device for which to delete the access code.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/get.md b/docs/api/access_codes/get.md
new file mode 100644
index 000000000..468d3f049
--- /dev/null
+++ b/docs/api/access_codes/get.md
@@ -0,0 +1,47 @@
+# Get an Access Code
+
+```
+POST /access_codes/get ⇒ { access_code }
+```
+
+Returns a specified [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+You must specify either `access_code_id` or both `device_id` and `code`.
+
+## Authentication Methods
+
+- API key
+- Client session token
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: No
+
+ID of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+### `code`
+
+Format: `String`
+Required: No
+
+Code of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: No
+
+ID of the device containing the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+## Return Type
+
+[access\_code](./)
diff --git a/docs/api/access_codes/list.md b/docs/api/access_codes/list.md
new file mode 100644
index 000000000..234907173
--- /dev/null
+++ b/docs/api/access_codes/list.md
@@ -0,0 +1,68 @@
+# List Access Codes
+
+```
+POST /access_codes/list ⇒ { access_codes: [access_code, …] }
+```
+
+Returns a list of all [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+Specify either `device_id` or `access_code_ids`.
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_ids`
+
+Format: `List`
+Item format: `UUID`
+Required: No
+
+IDs of the access codes that you want to retrieve. Specify either `device_id` or `access_code_ids`.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: No
+
+ID of the device for which you want to list access codes. Specify either `device_id` or `access_code_ids`.
+
+***
+
+### `limit`
+
+Format: `Number`
+Required: No
+
+Numerical limit on the number of access codes to return.
+
+***
+
+### `page_cursor`
+
+Format: `String`
+Required: No
+
+Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
+
+***
+
+### `user_identifier_key`
+
+Format: `String`
+Required: No
+
+Your user ID for the user by which to filter access codes.
+
+***
+
+## Return Type
+
+Array<[access\_code](./)>
diff --git a/docs/api/access_codes/pull_backup_access_code.md b/docs/api/access_codes/pull_backup_access_code.md
new file mode 100644
index 000000000..6e20941b5
--- /dev/null
+++ b/docs/api/access_codes/pull_backup_access_code.md
@@ -0,0 +1,37 @@
+# Pull a Backup Access Code
+
+```
+POST /access_codes/pull_backup_access_code ⇒ { access_code }
+```
+
+Retrieves a backup access code for an [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/backup-access-codes).
+
+A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes.
+
+If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access.
+
+You can only pull backup access codes for time-bound access codes.
+
+Before pulling a backup access code, make sure that the device's `properties.supports_backup_access_code_pool` is `true`. Then, to activate the backup pool, set `use_backup_access_code_pool` to `true` when creating an access code.
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the access code for which you want to pull a backup access code.
+
+***
+
+## Return Type
+
+[access\_code](./)
diff --git a/docs/api/access_codes/report_device_constraints.md b/docs/api/access_codes/report_device_constraints.md
new file mode 100644
index 000000000..738d1e42e
--- /dev/null
+++ b/docs/api/access_codes/report_device_constraints.md
@@ -0,0 +1,57 @@
+# Report Device Access Code Constraints
+
+```
+POST /access_codes/report_device_constraints ⇒ void
+```
+
+Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices.
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `device_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the device for which to report constraints.
+
+***
+
+### `max_code_length`
+
+Format: `Number`
+Required: No
+
+Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`.
+
+***
+
+### `min_code_length`
+
+Format: `Number`
+Required: No
+
+Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`.
+
+***
+
+### `supported_code_lengths`
+
+Format: `List`
+Item format: `Number`
+Required: No
+
+Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either `supported_code_lengths` or `min_code_length`/`max_code_length`.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/simulate/README.md b/docs/api/access_codes/simulate/README.md
new file mode 100644
index 000000000..1e63f87fa
--- /dev/null
+++ b/docs/api/access_codes/simulate/README.md
@@ -0,0 +1,2320 @@
+# Access Code Simulations
+
+## `unmanaged_access_code`
+
+Represents an [unmanaged smart lock access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly.
+
+When you create an access code on a device in Seam, it is created as a managed access code. Access codes that exist on a device that were not created through Seam are considered unmanaged codes. We strictly limit the operations that can be performed on unmanaged codes.
+
+Prior to using Seam to manage your devices, you may have used another lock management system to manage the access codes on your devices. Where possible, we help you keep any existing access codes on devices and transition those codes to ones managed by your Seam workspace.
+
+### `access_code_id`
+
+Format: `UUID`
+
+Unique identifier for the access code.
+
+---
+
+### `code`
+
+Format: `String`
+
+Code used for access. Typically, a numeric or alphanumeric string.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the access code was created.
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device associated with the access code.
+
+---
+
+### `ends_at`
+
+Format: `Datetime`
+
+Date and time after which the time-bound access code becomes inactive.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Errors associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_failed_to_set_after_multiple_retries
+
+Failed to set code after multiple retries.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_after_multiple_retries`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_no_free_slots_available
+
+No free slots available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_no_free_slots_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_set_on_device
+
+Failed to set code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_set_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_remove_from_device
+
+Failed to remove code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_remove_from_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_on_device
+
+Duplicate access code detected on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_attempt_prevented
+
+An attempt to modify this access code was prevented.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_attempt_prevented`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+no_space_for_access_code_on_device
+
+No space for access code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `no_space_for_access_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_too_many_pending_jobs
+
+Igloohome bridge has too many pending jobs in the queue.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_too_many_pending_jobs`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_offline
+
+Igloohome bridge is offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_offline_access_code_no_variance_available
+
+Lock has reached maximum amount of codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_offline_access_code_no_variance_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_deletion
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_deletion`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_invalid_code_length
+
+Invalid code length for August lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_invalid_code_length`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_slots_full
+
+All access code slots on the device are full.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_slots_full`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_missing_keypad
+
+August lock is missing a keypad.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_keypad`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+salto_ks_user_not_subscribed
+
+Salto site user is not subscribed.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_user_not_subscribed`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_no_free_positions_available
+
+No free positions available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_no_free_positions_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_duplicate_code_name
+
+Duplicate access code name detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_duplicate_code_name`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_potential_duplicate_code
+
+Potential duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_potential_duplicate_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+dormakaba_oracode_no_valid_user_level
+
+No valid user level for Oracode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `dormakaba_oracode_no_valid_user_level`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates that Seam does not manage the access code.
+
+---
+
+### `name`
+
+Format: `String`
+
+Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes.
+
+---
+
+### `starts_at`
+
+Format: `Datetime`
+
+Date and time at which the time-bound access code becomes active.
+
+---
+
+### `status`
+
+Format: `Enum`
+
+Current status of the access code within the operational lifecycle. `set` indicates that the code is active and operational.
+
+Possible enum values:
+- `set`
+
+---
+
+### `type`
+
+Format: `Enum`
+
+Nature of the access code. Values are `ongoing` for access codes that are active continuously until deactivated manually or `time_bound` for access codes that have a specific duration.
+
+Possible enum values:
+- `time_bound`
+- `ongoing`
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Warnings associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+
+
+schlage_detected_duplicate
+
+Duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_detected_duplicate`
+
+
+
+schlage_creation_outage
+
+Received an error when attempting to create this code.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_creation_outage`
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+
+
+delay_in_setting_on_device
+
+Delay in setting code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_setting_on_device`
+
+
+
+delay_in_removing_from_device
+
+Delay in removing code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_removing_from_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected that may cause access codes to fail.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+
+
+igloo_algopin_must_be_used_within_24_hours
+
+Algopins must be used within 24 hours.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloo_algopin_must_be_used_within_24_hours`
+
+
+
+management_transferred
+
+Management was transferred to another workspace.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `management_transferred`
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+
+
+---
+
+## Errors
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `smartthings_failed_to_set_after_multiple_retries`
+
+Failed to set code after multiple retries.
+
+---
+
+### `smartthings_no_free_slots_available`
+
+No free slots available on the device.
+
+---
+
+### `failed_to_set_on_device`
+
+Failed to set code on device.
+
+---
+
+### `failed_to_remove_from_device`
+
+Failed to remove code from device.
+
+---
+
+### `duplicate_code_on_device`
+
+Duplicate access code detected on device.
+
+---
+
+### `duplicate_code_attempt_prevented`
+
+An attempt to modify this access code was prevented.
+
+---
+
+### `no_space_for_access_code_on_device`
+
+No space for access code on device.
+
+---
+
+### `igloohome_bridge_too_many_pending_jobs`
+
+Igloohome bridge has too many pending jobs in the queue.
+
+---
+
+### `igloohome_bridge_offline`
+
+Igloohome bridge is offline.
+
+---
+
+### `igloohome_offline_access_code_no_variance_available`
+
+Lock has reached maximum amount of codes.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+### `kwikset_unable_to_confirm_deletion`
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `august_lock_invalid_code_length`
+
+Invalid code length for August lock.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_device_slots_full`
+
+All access code slots on the device are full.
+
+---
+
+### `august_lock_missing_keypad`
+
+August lock is missing a keypad.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `salto_ks_user_not_subscribed`
+
+Salto site user is not subscribed.
+
+---
+
+### `hubitat_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `hubitat_no_free_positions_available`
+
+No free positions available on the device.
+
+---
+
+### `wyze_duplicate_code_name`
+
+Duplicate access code name detected.
+
+---
+
+### `wyze_potential_duplicate_code`
+
+Potential duplicate access code detected.
+
+---
+
+### `dormakaba_oracode_no_valid_user_level`
+
+No valid user level for Oracode.
+
+---
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `schlage_detected_duplicate`
+
+Duplicate access code detected.
+
+---
+
+### `schlage_creation_outage`
+
+Received an error when attempting to create this code.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `delay_in_setting_on_device`
+
+Delay in setting code on device.
+
+---
+
+### `delay_in_removing_from_device`
+
+Delay in removing code from device.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected that may cause access codes to fail.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `igloo_algopin_must_be_used_within_24_hours`
+
+Algopins must be used within 24 hours.
+
+---
+
+### `management_transferred`
+
+Management was transferred to another workspace.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+## Endpoints
+
+### [`/access_codes/simulate/create_unmanaged_access_code`](./create_unmanaged_access_code.md)
+
+Simulates the creation of an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](../../../core-concepts/workspaces/README.md#sandbox-workspaces).
diff --git a/docs/api/access_codes/simulate/create_unmanaged_access_code.md b/docs/api/access_codes/simulate/create_unmanaged_access_code.md
new file mode 100644
index 000000000..3f9e8a607
--- /dev/null
+++ b/docs/api/access_codes/simulate/create_unmanaged_access_code.md
@@ -0,0 +1,47 @@
+# Simulate Creating an Unmanaged Access Code
+
+```
+POST /access_codes/simulate/create_unmanaged_access_code ⇒ { access_code }
+```
+
+Simulates the creation of an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](../../../core-concepts/workspaces/README.md#sandbox-workspaces).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `code`
+
+Format: `String`
+Required: Yes
+
+Code of the simulated unmanaged access code.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the device for which you want to simulate the creation of an unmanaged access code.
+
+***
+
+### `name`
+
+Format: `String`
+Required: Yes
+
+Name of the simulated unmanaged access code.
+
+***
+
+## Return Type
+
+[unmanaged\_access\_code](./)
diff --git a/docs/api/access_codes/unmanaged/README.md b/docs/api/access_codes/unmanaged/README.md
new file mode 100644
index 000000000..bc4527ced
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/README.md
@@ -0,0 +1,2332 @@
+# Unmanaged Access Codes
+
+## `unmanaged_access_code`
+
+Represents an [unmanaged smart lock access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly.
+
+When you create an access code on a device in Seam, it is created as a managed access code. Access codes that exist on a device that were not created through Seam are considered unmanaged codes. We strictly limit the operations that can be performed on unmanaged codes.
+
+Prior to using Seam to manage your devices, you may have used another lock management system to manage the access codes on your devices. Where possible, we help you keep any existing access codes on devices and transition those codes to ones managed by your Seam workspace.
+
+### `access_code_id`
+
+Format: `UUID`
+
+Unique identifier for the access code.
+
+---
+
+### `code`
+
+Format: `String`
+
+Code used for access. Typically, a numeric or alphanumeric string.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the access code was created.
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device associated with the access code.
+
+---
+
+### `ends_at`
+
+Format: `Datetime`
+
+Date and time after which the time-bound access code becomes inactive.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Errors associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_failed_to_set_after_multiple_retries
+
+Failed to set code after multiple retries.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_after_multiple_retries`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+smartthings_no_free_slots_available
+
+No free slots available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_no_free_slots_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_set_on_device
+
+Failed to set code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_set_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+failed_to_remove_from_device
+
+Failed to remove code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `failed_to_remove_from_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_on_device
+
+Duplicate access code detected on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+duplicate_code_attempt_prevented
+
+An attempt to modify this access code was prevented.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `duplicate_code_attempt_prevented`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+no_space_for_access_code_on_device
+
+No space for access code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `no_space_for_access_code_on_device`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_too_many_pending_jobs
+
+Igloohome bridge has too many pending jobs in the queue.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_too_many_pending_jobs`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_bridge_offline
+
+Igloohome bridge is offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_bridge_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+igloohome_offline_access_code_no_variance_available
+
+Lock has reached maximum amount of codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloohome_offline_access_code_no_variance_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+kwikset_unable_to_confirm_deletion
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_deletion`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_invalid_code_length
+
+Invalid code length for August lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_invalid_code_length`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_device_slots_full
+
+All access code slots on the device are full.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_slots_full`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_missing_keypad
+
+August lock is missing a keypad.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_keypad`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+salto_ks_user_not_subscribed
+
+Salto site user is not subscribed.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_user_not_subscribed`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_device_programming_delay`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+hubitat_no_free_positions_available
+
+No free positions available on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hubitat_no_free_positions_available`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_duplicate_code_name
+
+Duplicate access code name detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_duplicate_code_name`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+wyze_potential_duplicate_code
+
+Potential duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_potential_duplicate_code`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+dormakaba_oracode_no_valid_user_level
+
+No valid user level for Oracode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `dormakaba_oracode_no_valid_user_level`
+
+---
+
+**`is_access_code_error`**
+Format: `Boolean`
+
+
+Indicates that this is an access code error.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates that Seam does not manage the access code.
+
+---
+
+### `name`
+
+Format: `String`
+
+Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes.
+
+---
+
+### `starts_at`
+
+Format: `Datetime`
+
+Date and time at which the time-bound access code becomes active.
+
+---
+
+### `status`
+
+Format: `Enum`
+
+Current status of the access code within the operational lifecycle. `set` indicates that the code is active and operational.
+
+Possible enum values:
+- `set`
+
+---
+
+### `type`
+
+Format: `Enum`
+
+Nature of the access code. Values are `ongoing` for access codes that are active continuously until deactivated manually or `time_bound` for access codes that have a specific duration.
+
+Possible enum values:
+- `time_bound`
+- `ongoing`
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+Warnings associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+smartthings_failed_to_set_access_code
+
+Failed to set code on SmartThings device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `smartthings_failed_to_set_access_code`
+
+
+
+schlage_detected_duplicate
+
+Duplicate access code detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_detected_duplicate`
+
+
+
+schlage_creation_outage
+
+Received an error when attempting to create this code.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `schlage_creation_outage`
+
+
+
+code_modified_external_to_seam
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `code_modified_external_to_seam`
+
+
+
+delay_in_setting_on_device
+
+Delay in setting code on device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_setting_on_device`
+
+
+
+delay_in_removing_from_device
+
+Delay in removing code from device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `delay_in_removing_from_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected that may cause access codes to fail.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+august_device_programming_delay
+
+Access code has not yet been fully moved to the device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_device_programming_delay`
+
+
+
+august_lock_temporarily_offline
+
+August lock is temporarily offline.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_temporarily_offline`
+
+
+
+igloo_algopin_must_be_used_within_24_hours
+
+Algopins must be used within 24 hours.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `igloo_algopin_must_be_used_within_24_hours`
+
+
+
+management_transferred
+
+Management was transferred to another workspace.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `management_transferred`
+
+
+
+kwikset_unable_to_confirm_code
+
+Unable to confirm that the access code is set on Kwikset device.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `kwikset_unable_to_confirm_code`
+
+
+
+---
+
+## Errors
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `smartthings_failed_to_set_after_multiple_retries`
+
+Failed to set code after multiple retries.
+
+---
+
+### `smartthings_no_free_slots_available`
+
+No free slots available on the device.
+
+---
+
+### `failed_to_set_on_device`
+
+Failed to set code on device.
+
+---
+
+### `failed_to_remove_from_device`
+
+Failed to remove code from device.
+
+---
+
+### `duplicate_code_on_device`
+
+Duplicate access code detected on device.
+
+---
+
+### `duplicate_code_attempt_prevented`
+
+An attempt to modify this access code was prevented.
+
+---
+
+### `no_space_for_access_code_on_device`
+
+No space for access code on device.
+
+---
+
+### `igloohome_bridge_too_many_pending_jobs`
+
+Igloohome bridge has too many pending jobs in the queue.
+
+---
+
+### `igloohome_bridge_offline`
+
+Igloohome bridge is offline.
+
+---
+
+### `igloohome_offline_access_code_no_variance_available`
+
+Lock has reached maximum amount of codes.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+### `kwikset_unable_to_confirm_deletion`
+
+Unable to confirm the deletion of the access code on Kwikset device.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `august_lock_invalid_code_length`
+
+Invalid code length for August lock.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_device_slots_full`
+
+All access code slots on the device are full.
+
+---
+
+### `august_lock_missing_keypad`
+
+August lock is missing a keypad.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `salto_ks_user_not_subscribed`
+
+Salto site user is not subscribed.
+
+---
+
+### `hubitat_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `hubitat_no_free_positions_available`
+
+No free positions available on the device.
+
+---
+
+### `wyze_duplicate_code_name`
+
+Duplicate access code name detected.
+
+---
+
+### `wyze_potential_duplicate_code`
+
+Potential duplicate access code detected.
+
+---
+
+### `dormakaba_oracode_no_valid_user_level`
+
+No valid user level for Oracode.
+
+---
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `smartthings_failed_to_set_access_code`
+
+Failed to set code on SmartThings device.
+
+---
+
+### `schlage_detected_duplicate`
+
+Duplicate access code detected.
+
+---
+
+### `schlage_creation_outage`
+
+Received an error when attempting to create this code.
+
+---
+
+### `code_modified_external_to_seam`
+
+Code was modified or removed externally after Seam successfully set it on the device.
+
+---
+
+### `delay_in_setting_on_device`
+
+Delay in setting code on device.
+
+---
+
+### `delay_in_removing_from_device`
+
+Delay in removing code from device.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected that may cause access codes to fail.
+
+---
+
+### `august_device_programming_delay`
+
+Access code has not yet been fully moved to the device.
+
+---
+
+### `august_lock_temporarily_offline`
+
+August lock is temporarily offline.
+
+---
+
+### `igloo_algopin_must_be_used_within_24_hours`
+
+Algopins must be used within 24 hours.
+
+---
+
+### `management_transferred`
+
+Management was transferred to another workspace.
+
+---
+
+### `kwikset_unable_to_confirm_code`
+
+Unable to confirm that the access code is set on Kwikset device.
+
+---
+
+## Endpoints
+
+### [`/access_codes/unmanaged/convert_to_managed`](./convert_to_managed.md)
+
+Converts an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+### [`/access_codes/unmanaged/delete`](./delete.md)
+
+Deletes an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+### [`/access_codes/unmanaged/get`](./get.md)
+
+Returns a specified [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+### [`/access_codes/unmanaged/list`](./list.md)
+
+Returns a list of all [unmanaged access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+### [`/access_codes/unmanaged/update`](./update.md)
+
+Updates a specified [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
diff --git a/docs/api/access_codes/unmanaged/convert_to_managed.md b/docs/api/access_codes/unmanaged/convert_to_managed.md
new file mode 100644
index 000000000..9f6e03e5d
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/convert_to_managed.md
@@ -0,0 +1,60 @@
+# Convert an Unmanaged Access Code
+
+```
+PATCH /access_codes/unmanaged/convert_to_managed ⇒ void
+```
+
+Converts an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it.
+
+Note that not all device providers support converting an unmanaged access code to a managed access code.
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the unmanaged access code that you want to convert to a managed access code.
+
+***
+
+### `allow_external_modification`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether external modification of the access code is allowed.
+
+***
+
+### `force`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set `force` to `true`.
+
+***
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether external modification of the access code is allowed.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/unmanaged/delete.md b/docs/api/access_codes/unmanaged/delete.md
new file mode 100644
index 000000000..fc8a38cc8
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/delete.md
@@ -0,0 +1,29 @@
+# Delete an Unmanaged Access Code
+
+```
+POST /access_codes/unmanaged/delete ⇒ void
+```
+
+Deletes an [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the unmanaged access code to delete.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/unmanaged/get.md b/docs/api/access_codes/unmanaged/get.md
new file mode 100644
index 000000000..d87762e7f
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/get.md
@@ -0,0 +1,49 @@
+# Get an Unmanaged Access Code
+
+```
+POST /access_codes/unmanaged/get ⇒ { access_code }
+```
+
+Returns a specified [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+You must specify either `access_code_id` or both `device_id` and `code`.
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: No
+
+ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+### `code`
+
+Format: `String`
+Required: No
+
+Code of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: No
+
+ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
+
+***
+
+## Return Type
+
+[unmanaged\_access\_code](./)
diff --git a/docs/api/access_codes/unmanaged/list.md b/docs/api/access_codes/unmanaged/list.md
new file mode 100644
index 000000000..360dbbc65
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/list.md
@@ -0,0 +1,38 @@
+# List Unmanaged Access Codes
+
+```
+POST /access_codes/unmanaged/list ⇒ { access_codes: [unmanaged_access_code, …] }
+```
+
+Returns a list of all [unmanaged access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `device_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the device for which you want to list unmanaged access codes.
+
+***
+
+### `user_identifier_key`
+
+Format: `String`
+Required: No
+
+Your user ID for the user by which to filter unmanaged access codes.
+
+***
+
+## Return Type
+
+Array<[unmanaged\_access\_code](./)>
diff --git a/docs/api/access_codes/unmanaged/update.md b/docs/api/access_codes/unmanaged/update.md
new file mode 100644
index 000000000..97b02a652
--- /dev/null
+++ b/docs/api/access_codes/unmanaged/update.md
@@ -0,0 +1,63 @@
+# Update an Unmanaged Access Code
+
+```
+PATCH /access_codes/unmanaged/update ⇒ void
+```
+
+Updates a specified [unmanaged access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the unmanaged access code that you want to update.
+
+***
+
+### `is_managed`
+
+Format: `Boolean`
+Required: Yes
+
+***
+
+### `allow_external_modification`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#external-modification) of the code is allowed.
+
+***
+
+### `force`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether to force the unmanaged access code update.
+
+***
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#external-modification) of the code is allowed.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/update.md b/docs/api/access_codes/update.md
new file mode 100644
index 000000000..bc0eeb82b
--- /dev/null
+++ b/docs/api/access_codes/update.md
@@ -0,0 +1,190 @@
+# Update an Access Code
+
+```
+PUT /access_codes/update ⇒ void
+```
+
+Updates a specified active or upcoming [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
+
+See also [Modifying Access Codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/modifying-access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_code_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the access code that you want to update.
+
+***
+
+### `allow_external_modification`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `attempt_for_offline_device`
+
+Format: `Boolean`
+Required: No
+
+***
+
+### `code`
+
+Format: `String`
+Required: No
+
+Code to be used for access.
+
+***
+
+### `device_id`
+
+Format: `UUID`
+Required: No
+
+ID of the device containing the access code that you want to update.
+
+***
+
+### `ends_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
+
+***
+
+### `is_external_modification_allowed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [external modification](https://docs.seam.co/latest/api/access_codes#external-modification) of the code is allowed. Default: `false`.
+
+***
+
+### `is_managed`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use `/access_codes/unmanaged/convert_to_managed`.
+
+***
+
+### `is_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the access code is an [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes).
+
+***
+
+### `is_one_time_use`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether the [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) is a single-use access code.
+
+***
+
+### `max_time_rounding`
+
+Format: `Enum`
+Required: No
+
+Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`.
+
+Possible enum values:
+- `1hour`
+- `1day`
+- `1h`
+- `1d`
+
+***
+
+### `name`
+
+Format: `String`
+Required: No
+
+Name of the new access code.
+
+***
+
+### `prefer_native_scheduling`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether [native scheduling](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`.
+
+***
+
+### `preferred_code_length`
+
+Format: `Number`
+Required: No
+
+Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length.
+
+***
+
+### `starts_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+***
+
+### `type`
+
+Format: `Enum`
+Required: No
+
+Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access).
+
+Possible enum values:
+- `ongoing`
+- `time_bound`
+
+***
+
+### `use_backup_access_code_pool`
+
+Format: `Boolean`
+Required: No
+
+Indicates whether to use a [backup access code pool](https://docs.seam.co/latest/core-concepts/access-codes#backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](../../api-clients/access_codes/pull_backup_access_code.md).
+
+***
+
+### `use_offline_access_code`
+
+Format: `Boolean`
+Required: No
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/access_codes/update_multiple.md b/docs/api/access_codes/update_multiple.md
new file mode 100644
index 000000000..341bbd4aa
--- /dev/null
+++ b/docs/api/access_codes/update_multiple.md
@@ -0,0 +1,60 @@
+# Update Multiple Linked Access Codes
+
+```
+PATCH /access_codes/update_multiple ⇒ void
+```
+
+Updates [access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that share a common code across multiple devices.
+
+Specify the `common_code_key` to identify the set of access codes that you want to update.
+
+See also [Update Linked Access Codes](../../capability-guides/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes.md#update-linked-access-codes).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `common_code_key`
+
+Format: `String`
+Required: Yes
+
+Key that links the group of access codes, assigned on creation by `/access_codes/create_multiple`.
+
+***
+
+### `ends_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
+
+***
+
+### `name`
+
+Format: `String`
+Required: No
+
+Name of the new access code.
+
+***
+
+### `starts_at`
+
+Format: `String`
+Required: No
+
+Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+***
+
+## Return Type
+
+void
diff --git a/docs/api/client_sessions/README.md b/docs/api/client_sessions/README.md
new file mode 100644
index 000000000..4df09e0f6
--- /dev/null
+++ b/docs/api/client_sessions/README.md
@@ -0,0 +1,119 @@
+# Client Sessions
+
+## `client_session`
+
+### `client_session_id`
+
+Format: `UUID`
+
+---
+
+### `connect_webview_ids`
+
+Format: `List`
+
+Item format: `UUID`
+
+---
+
+### `connected_account_ids`
+
+Format: `List`
+
+Item format: `UUID`
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+---
+
+### `device_count`
+
+Format: `Number`
+
+---
+
+### `expires_at`
+
+Format: `Datetime`
+
+---
+
+### `token`
+
+Format: `String`
+
+---
+
+### `user_identifier_key`
+
+Format: `String`
+
+---
+
+### `user_identity_ids`
+
+Format: `List`
+
+Item format: `UUID`
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+---
+
+## Endpoints
+
+
+---
+
+## Events
+
+### `client_session.deleted`
+
+A [client session](../../core-concepts/authentication/client-session-tokens/README.md) was deleted.
+
+
+
+client_session_id Format: UUID
+
+ID of the [client session](../../core-concepts/authentication/client-session-tokens/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `client_session.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/connect_webviews/README.md b/docs/api/connect_webviews/README.md
new file mode 100644
index 000000000..f99230ab0
--- /dev/null
+++ b/docs/api/connect_webviews/README.md
@@ -0,0 +1,237 @@
+# Connect Webviews
+
+## `connect_webview`
+
+### `accepted_devices`
+
+{% hint style="warning" %}
+**Deprecated**. Unused. Will be removed.
+{% endhint %}
+
+Format: `List`
+
+Item format: `String`
+
+---
+
+### `accepted_providers`
+
+Format: `List`
+
+Item format: `String`
+
+---
+
+### `any_device_allowed`
+
+{% hint style="warning" %}
+**Deprecated**. Unused. Will be removed.
+{% endhint %}
+
+Format: `Boolean`
+
+---
+
+### `any_provider_allowed`
+
+Format: `Boolean`
+
+---
+
+### `authorized_at`
+
+Format: `Datetime`
+
+---
+
+### `automatically_manage_new_devices`
+
+Format: `Boolean`
+
+---
+
+### `connect_webview_id`
+
+Format: `UUID`
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+---
+
+### `custom_metadata`
+
+Format: `Record`
+
+---
+
+### `custom_redirect_failure_url`
+
+Format: `String`
+
+---
+
+### `custom_redirect_url`
+
+Format: `String`
+
+---
+
+### `device_selection_mode`
+
+Format: `Enum`
+
+Possible enum values:
+- `none`
+- `single`
+- `multiple`
+
+---
+
+### `login_successful`
+
+Format: `Boolean`
+
+---
+
+### `selected_provider`
+
+Format: `String`
+
+---
+
+### `status`
+
+Format: `Enum`
+
+Possible enum values:
+- `pending`
+- `failed`
+- `authorized`
+
+---
+
+### `url`
+
+Format: `String`
+
+---
+
+### `wait_for_device_creation`
+
+Format: `Boolean`
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+---
+
+## Endpoints
+
+
+---
+
+## Events
+
+### `connect_webview.login_succeeded`
+
+A [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews) login succeeded.
+
+
+
+connect_webview_id Format: UUID
+
+ID of the [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connect_webview.login_succeeded`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connect_webview.login_failed`
+
+A [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews) login failed.
+
+
+
+connect_webview_id Format: UUID
+
+ID of the [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connect_webview.login_failed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/connected_accounts/README.md b/docs/api/connected_accounts/README.md
new file mode 100644
index 000000000..a7f4c7d5e
--- /dev/null
+++ b/docs/api/connected_accounts/README.md
@@ -0,0 +1,725 @@
+# Connected Accounts
+
+## `connected_account`
+
+### `account_type`
+
+Format: `String`
+
+---
+
+### `account_type_display_name`
+
+Format: `String`
+
+---
+
+### `automatically_manage_new_devices`
+
+Format: `Boolean`
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+---
+
+### `custom_metadata`
+
+Format: `Record`
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+account_disconnected
+
+Account is disconnected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Indicates that the maximum number of users allowed for the site has been reached. This means that new access codes cannot be created. Contact Salto support to increase the user limit.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`salto_ks_metadata`**
+Format: `Object`
+
+
+
+
+---
+
+### `user_identifier`
+
+Format: `Object`
+
+
+
+api_url Format: String
+
+
+
+
+email Format: String
+
+
+
+
+exclusive Format: Boolean
+
+
+
+
+phone Format: String
+
+
+
+
+username Format: String
+
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+scheduled_maintenance_window
+
+Scheduled downtime for account planned.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `scheduled_maintenance_window`
+
+
+
+unknown_issue_with_connected_account
+
+An unknown issue occurred while syncing the state of this connected account with the provider. This issue may affect the proper functioning of one or more resources in this account.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `unknown_issue_with_connected_account`
+
+
+
+salto_ks_subscription_limit_almost_reached
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the warning.
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`salto_ks_metadata`**
+Format: `Object`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_almost_reached`
+
+
+
+---
+
+## Errors
+
+### `account_disconnected`
+
+Account is disconnected.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Indicates that the maximum number of users allowed for the site has been reached. This means that new access codes cannot be created. Contact Salto support to increase the user limit.
+
+---
+
+## Warnings
+
+### `scheduled_maintenance_window`
+
+Scheduled downtime for account planned.
+
+---
+
+### `unknown_issue_with_connected_account`
+
+An unknown issue occurred while syncing the state of this connected account with the provider. This issue may affect the proper functioning of one or more resources in this account.
+
+---
+
+### `salto_ks_subscription_limit_almost_reached`
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+---
+
+## Endpoints
+
+
+---
+
+## Events
+
+### `connected_account.connected`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) was connected for the first time or was reconnected after being disconnected.
+
+
+
+connect_webview_id Format: UUID
+
+ID of the [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.created`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) was created.
+
+
+
+connect_webview_id Format: UUID
+
+ID of the [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.created`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.successful_login`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) had a successful login using a [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+connect_webview_id Format: UUID
+
+ID of the [Connect Webview](https://docs.seam.co/latest/ui-components/connect-webviews).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.successful_login`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.disconnected`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) was disconnected.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.completed_first_sync`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) completed the first sync with Seam, and the corresponding devices or systems are now available.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.completed_first_sync`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.deleted`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) was deleted.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `connected_account.completed_first_sync_after_reconnection`
+
+A [connected account](../../core-concepts/connected-accounts/README.md) completed the first sync after reconnection with Seam, and the corresponding devices or systems are now available.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `connected_account.completed_first_sync_after_reconnection`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/devices/README.md b/docs/api/devices/README.md
new file mode 100644
index 000000000..d9e764b86
--- /dev/null
+++ b/docs/api/devices/README.md
@@ -0,0 +1,4519 @@
+# Devices
+
+## `device`
+
+### `can_hvac_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_program_offline_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_program_online_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_lock`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_unlock`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_connection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_disconnection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_removal`
+
+Format: `Boolean`
+
+---
+
+### `can_turn_off_hvac`
+
+Format: `Boolean`
+
+---
+
+### `capabilities_supported`
+
+Format: `List`
+
+Item format: `Enum`
+
+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; and "battery," which indicates that the device can manage battery life and health.
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+Unique identifier for the account associated with the device.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the device object was created.
+
+---
+
+### `custom_metadata`
+
+Format: `Record`
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device.
+
+---
+
+### `device_type`
+
+Format: `Enum`
+
+Type of the device.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+---
+
+### `display_name`
+
+Format: `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.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates whether Seam manages the device.
+
+---
+
+### `location`
+
+Format: `Object`
+
+Location information for the device.
+
+
+
+location_name Format: String
+
+Name of the device location.
+
+
+
+
+timezone Format: String
+
+Time zone of the device location.
+
+
+---
+
+### `nickname`
+
+Format: `String`
+
+Optional nickname to describe the device, settable through Seam
+
+---
+
+### `properties`
+
+Format: `Object`
+
+Properties of the device.
+
+
+
+accessory_keypad Format: Object
+
+Represents the accessory keypad state.
+
+
+
+
+accessory_keypad.battery Format: Object
+
+Indicates if the keypad battery properties.
+
+
+
+
+accessory_keypad.battery.level Format: Number
+
+
+
+
+accessory_keypad.is_connected Format: Boolean
+
+Indicates if the accessory_keypad is connected to the device.
+
+
+
+
+appearance Format: Object
+
+
+
+
+appearance.name Format: String
+
+Name of the device as seen from the provider API and application, not settable through Seam.
+
+
+
+
+battery Format: Object
+
+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.
+
+
+
+
+battery.level Format: Number
+
+
+
+
+battery.status Format: Enum
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+
+battery_level Format: Number
+
+Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
+
+
+
+
+currently_triggering_noise_threshold_ids Format: List Item format: String
+
+Array of noise threshold IDs that are currently triggering.
+
+
+
+
+has_direct_power Format: Boolean
+
+Indicates whether the device has direct power.
+
+
+
+
+image_alt_text Format: String
+
+Alt text for the device image.
+
+
+
+
+image_url Format: String
+
+Image URL for the device.
+
+
+
+
+manufacturer Format: String
+
+Manufacturer of the device.
+
+
+
+
+model Format: Object
+
+
+
+
+model.accessory_keypad_supported Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+model.can_connect_accessory_keypad Format: Boolean
+
+Indicates whether the device can connect a accessory keypad.
+
+
+
+
+model.display_name Format: String
+
+Display name of the device model.
+
+
+
+
+model.has_built_in_keypad Format: Boolean
+
+Indicates whether the device has a built in accessory keypad.
+
+
+
+
+model.manufacturer_display_name Format: String
+
+Display name that corresponds to the manufacturer-specific terminology for the device.
+
+
+
+
+model.offline_access_codes_supported Format: Boolean
+
+Indicates whether the device supports offline access codes.
+
+
+
+
+model.online_access_codes_supported Format: Boolean
+
+Indicates whether the device supports online access codes.
+
+
+
+
+name Format: String
+
+{% hint style="warning" %}
+**Deprecated**. use device.display_name instead
+{% endhint %}
+
+Name of the device.
+
+
+
+
+noise_level_decibels Format: Number
+
+Indicates current noise level in decibels, if the device supports noise detection.
+
+
+
+
+offline_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use offline access codes for the device.
+
+
+
+
+online Format: Boolean
+
+Indicates whether the device is online.
+
+
+
+
+online_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use online access codes for the device.
+
+
+
+
+serial_number Format: String
+
+Serial number of the device.
+
+
+
+
+supports_accessory_keypad Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+supports_offline_access_codes Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use offline_access_codes_enabled
+{% endhint %}
+
+
+
+
+assa_abloy_credential_service_metadata Format: Object
+
+ASSA ABLOY Credential Service metadata for the phone.
+
+
+
+
+assa_abloy_credential_service_metadata.endpoints Format: List Item format: Object
+
+Endpoints associated with the phone.
+
+- endpoint_id Format: String
+
+ ID of the associated endpoint.
+
+
+- is_active Format: Boolean
+
+ Indicated whether the endpoint is active.
+
+
+
+
+
+assa_abloy_credential_service_metadata.has_active_endpoint Format: Boolean
+
+Indicates whether the credential service has active endpoints associated with the phone.
+
+
+
+
+salto_space_credential_service_metadata Format: Object
+
+Salto Space credential service metadata for the phone.
+
+
+
+
+salto_space_credential_service_metadata.has_active_phone Format: Boolean
+
+Indicates whether the credential service has an active associated phone.
+
+
+
+
+akiles_metadata Format: Object
+
+
+
+
+akiles_metadata._member_group_id Format: String
+
+
+
+
+akiles_metadata.gadget_id Format: String
+
+
+
+
+akiles_metadata.gadget_name Format: String
+
+
+
+
+akiles_metadata.product_name Format: String
+
+
+
+
+assa_abloy_vostio_metadata Format: Object
+
+
+
+
+assa_abloy_vostio_metadata.encoder_name Format: String
+
+
+
+
+august_metadata Format: Object
+
+
+
+
+august_metadata.has_keypad Format: Boolean
+
+
+
+
+august_metadata.house_id Format: String
+
+
+
+
+august_metadata.house_name Format: String
+
+
+
+
+august_metadata.keypad_battery_level Format: String
+
+
+
+
+august_metadata.lock_id Format: String
+
+
+
+
+august_metadata.lock_name Format: String
+
+
+
+
+august_metadata.model Format: String
+
+
+
+
+avigilon_alta_metadata Format: Object
+
+
+
+
+avigilon_alta_metadata.entry_name Format: String
+
+
+
+
+avigilon_alta_metadata.entry_relays_total_count Format: Number
+
+
+
+
+avigilon_alta_metadata.org_name Format: String
+
+
+
+
+avigilon_alta_metadata.site_id Format: Number
+
+
+
+
+avigilon_alta_metadata.site_name Format: String
+
+
+
+
+avigilon_alta_metadata.zone_id Format: Number
+
+
+
+
+avigilon_alta_metadata.zone_name Format: String
+
+
+
+
+brivo_metadata Format: Object
+
+
+
+
+brivo_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata Format: Object
+
+
+
+
+controlbyweb_metadata.device_id Format: String
+
+
+
+
+controlbyweb_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata.relay_name Format: String
+
+
+
+
+dormakaba_oracode_metadata Format: Object
+
+
+
+
+dormakaba_oracode_metadata.device_id Format: Object
+
+
+
+
+dormakaba_oracode_metadata.door_id Format: Number
+
+
+
+
+dormakaba_oracode_metadata.door_is_wireless Format: Boolean
+
+
+
+
+dormakaba_oracode_metadata.door_name Format: String
+
+
+
+
+dormakaba_oracode_metadata.iana_timezone Format: String
+
+
+
+
+dormakaba_oracode_metadata.predefined_time_slots Format: List Item format: Object
+
+- check_in_time Format: String
+
+
+- check_out_time Format: String
+
+
+- dormakaba_oracode_user_level_id Format: UUID
+
+
+- ext_dormakaba_oracode_user_level_prefix Format: Number
+
+
+- is_24_hour Format: Boolean
+
+
+- is_biweekly_mode Format: Boolean
+
+
+- is_master Format: Boolean
+
+
+- is_one_shot Format: Boolean
+
+
+- name Format: String
+
+
+- prefix Format: Number
+
+
+
+
+
+dormakaba_oracode_metadata.site_id Format: Number
+
+@DEPRECATED
+
+
+
+
+dormakaba_oracode_metadata.site_name Format: String
+
+
+
+
+ecobee_metadata Format: Object
+
+
+
+
+ecobee_metadata.device_name Format: String
+
+
+
+
+ecobee_metadata.ecobee_device_id Format: String
+
+
+
+
+four_suites_metadata Format: Object
+
+
+
+
+four_suites_metadata.device_id Format: Number
+
+
+
+
+four_suites_metadata.device_name Format: String
+
+
+
+
+four_suites_metadata.reclose_delay_in_seconds Format: Number
+
+
+
+
+genie_metadata Format: Object
+
+
+
+
+genie_metadata.device_name Format: String
+
+
+
+
+genie_metadata.door_name Format: String
+
+
+
+
+honeywell_resideo_metadata Format: Object
+
+
+
+
+honeywell_resideo_metadata.device_name Format: String
+
+
+
+
+honeywell_resideo_metadata.honeywell_resideo_device_id Format: String
+
+
+
+
+hubitat_metadata Format: Object
+
+
+
+
+hubitat_metadata.device_id Format: String
+
+
+
+
+hubitat_metadata.device_label Format: String
+
+
+
+
+hubitat_metadata.device_name Format: String
+
+
+
+
+igloo_metadata Format: Object
+
+
+
+
+igloo_metadata.bridge_id Format: String
+
+
+
+
+igloo_metadata.device_id Format: String
+
+
+
+
+igloo_metadata.model Format: String
+
+
+
+
+igloohome_metadata Format: Object
+
+
+
+
+igloohome_metadata.bridge_id Format: String
+
+
+
+
+igloohome_metadata.bridge_name Format: String
+
+
+
+
+igloohome_metadata.device_id Format: String
+
+
+
+
+igloohome_metadata.device_name Format: String
+
+
+
+
+igloohome_metadata.keypad_id Format: String
+
+
+
+
+kwikset_metadata Format: Object
+
+
+
+
+kwikset_metadata.device_id Format: String
+
+
+
+
+kwikset_metadata.device_name Format: String
+
+
+
+
+kwikset_metadata.model_number Format: String
+
+
+
+
+lockly_metadata Format: Object
+
+
+
+
+lockly_metadata.device_id Format: String
+
+
+
+
+lockly_metadata.device_name Format: String
+
+
+
+
+lockly_metadata.model Format: String
+
+
+
+
+minut_metadata Format: Object
+
+
+
+
+minut_metadata.device_id Format: String
+
+
+
+
+minut_metadata.device_name Format: String
+
+
+
+
+minut_metadata.latest_sensor_values Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.humidity Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.pressure Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.sound Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.sound.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.sound.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.temperature Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.value Format: Number
+
+
+
+
+nest_metadata Format: Object
+
+
+
+
+nest_metadata.device_custom_name Format: String
+
+
+
+
+nest_metadata.device_name Format: String
+
+
+
+
+nest_metadata.display_name Format: String
+
+
+
+
+nest_metadata.nest_device_id Format: String
+
+
+
+
+noiseaware_metadata Format: Object
+
+
+
+
+noiseaware_metadata.device_id Format: String
+
+
+
+
+noiseaware_metadata.device_model Format: Enum
+
+Possible enum values:
+- `indoor`
+- `outdoor`
+
+
+
+
+noiseaware_metadata.device_name Format: String
+
+
+
+
+noiseaware_metadata.noise_level_decibel Format: Number
+
+
+
+
+noiseaware_metadata.noise_level_nrs Format: Number
+
+
+
+
+nuki_metadata Format: Object
+
+
+
+
+nuki_metadata.device_id Format: String
+
+
+
+
+nuki_metadata.device_name Format: String
+
+
+
+
+nuki_metadata.keypad_2_paired Format: Boolean
+
+
+
+
+nuki_metadata.keypad_battery_critical Format: Boolean
+
+
+
+
+nuki_metadata.keypad_paired Format: Boolean
+
+
+
+
+salto_ks_metadata Format: Object
+
+
+
+
+salto_ks_metadata.battery_level Format: String
+
+
+
+
+salto_ks_metadata.customer_reference Format: String
+
+
+
+
+salto_ks_metadata.lock_id Format: String
+
+
+
+
+salto_ks_metadata.lock_type Format: String
+
+
+
+
+salto_ks_metadata.locked_state Format: String
+
+
+
+
+salto_ks_metadata.model Format: String
+
+
+
+
+salto_metadata Format: Object
+
+
+ ---
+ deprecated: Use `salto_ks_metadata ` instead.
+
+
+
+
+
+salto_metadata.battery_level Format: String
+
+
+
+
+salto_metadata.customer_reference Format: String
+
+
+
+
+salto_metadata.lock_id Format: String
+
+
+
+
+salto_metadata.lock_type Format: String
+
+
+
+
+salto_metadata.locked_state Format: String
+
+
+
+
+salto_metadata.model Format: String
+
+
+
+
+schlage_metadata Format: Object
+
+
+
+
+schlage_metadata.device_id Format: String
+
+
+
+
+schlage_metadata.device_name Format: String
+
+
+
+
+schlage_metadata.model Format: String
+
+
+
+
+seam_bridge_metadata Format: Object
+
+
+
+
+seam_bridge_metadata.device_num Format: Number
+
+
+
+
+seam_bridge_metadata.name Format: String
+
+
+
+
+seam_bridge_metadata.unlock_method Format: Enum
+
+Possible enum values:
+- `bridge`
+- `doorking`
+
+
+
+
+sensi_metadata Format: Object
+
+
+
+
+sensi_metadata.device_id Format: String
+
+
+
+
+sensi_metadata.device_name Format: String
+
+
+
+
+sensi_metadata.product_type Format: String
+
+
+
+
+smartthings_metadata Format: Object
+
+
+
+
+smartthings_metadata.device_id Format: String
+
+
+
+
+smartthings_metadata.device_name Format: String
+
+
+
+
+smartthings_metadata.location_id Format: String
+
+
+
+
+smartthings_metadata.model Format: String
+
+
+
+
+tado_metadata Format: Object
+
+
+
+
+tado_metadata.device_type Format: String
+
+
+
+
+tado_metadata.serial_no Format: String
+
+
+
+
+tedee_metadata Format: Object
+
+
+
+
+tedee_metadata.bridge_id Format: Number
+
+
+
+
+tedee_metadata.bridge_name Format: String
+
+
+
+
+tedee_metadata.device_id Format: Number
+
+
+
+
+tedee_metadata.device_model Format: String
+
+
+
+
+tedee_metadata.device_name Format: String
+
+
+
+
+tedee_metadata.keypad_id Format: Number
+
+
+
+
+tedee_metadata.serial_number Format: String
+
+
+
+
+ttlock_metadata Format: Object
+
+
+
+
+ttlock_metadata.feature_value Format: String
+
+
+
+
+ttlock_metadata.features Format: Object
+
+
+
+
+ttlock_metadata.features.incomplete_keyboard_passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.lock_command Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode_management Format: Boolean
+
+
+
+
+ttlock_metadata.features.unlock_via_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.features.wifi Format: Boolean
+
+
+
+
+ttlock_metadata.has_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.lock_alias Format: String
+
+
+
+
+ttlock_metadata.lock_id Format: Number
+
+
+
+
+ttlock_metadata.wireless_keypads Format: List Item format: Object
+
+- wireless_keypad_id Format: Number
+
+
+- wireless_keypad_name Format: String
+
+
+
+
+
+two_n_metadata Format: Object
+
+
+
+
+two_n_metadata.device_id Format: Number
+
+
+
+
+two_n_metadata.device_name Format: String
+
+
+
+
+visionline_metadata Format: Object
+
+
+
+
+visionline_metadata.encoder_id Format: String
+
+
+
+
+wyze_metadata Format: Object
+
+
+
+
+wyze_metadata.device_id Format: String
+
+
+
+
+wyze_metadata.device_info_model Format: String
+
+
+
+
+wyze_metadata.device_name Format: String
+
+
+
+
+wyze_metadata.keypad_uuid Format: String
+
+
+
+
+wyze_metadata.locker_status_hardlock Format: Number
+
+
+
+
+wyze_metadata.product_model Format: String
+
+
+
+
+wyze_metadata.product_name Format: String
+
+
+
+
+wyze_metadata.product_type Format: String
+
+
+
+
+_experimental_supported_code_from_access_codes_lengths Format: List Item format: Number
+
+
+
+
+code_constraints Format: List Item format: Object
+
+- constraint_type Format: Enum
+
+ Possible enum values:
+ - `no_zeros`
+ - `cannot_start_with_12`
+ - `no_triple_consecutive_ints`
+ - `cannot_specify_pin_code`
+ - `pin_code_matches_existing_set`
+ - `start_date_in_future`
+ - `no_ascending_or_descending_sequence`
+ - `at_least_three_unique_digits`
+ - `cannot_contain_089`
+ - `cannot_contain_0789`
+ - `name_length`
+ - `name_must_be_unique`
+
+
+- max_length Format: Number
+
+
+- min_length Format: Number
+
+
+
+
+
+door_open Format: Boolean
+
+
+
+
+has_native_entry_events Format: Boolean
+
+
+
+
+keypad_battery Format: Object
+
+
+
+
+keypad_battery.level Format: Number
+
+
+
+
+locked Format: Boolean
+
+
+
+
+max_active_codes_supported Format: Number
+
+
+
+
+supported_code_lengths Format: List Item format: Number
+
+
+
+
+supports_backup_access_code_pool Format: Boolean
+
+
+
+
+active_thermostat_schedule Format: Object
+
+Represents a [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) that activates a configured [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) on a [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time.
+
+
+
+
+active_thermostat_schedule.climate_preset_key Format: 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).
+
+
+
+
+active_thermostat_schedule.created_at Format: Datetime
+
+Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) was created.
+
+
+
+
+active_thermostat_schedule.device_id Format: UUID
+
+ID of the desired [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) device.
+
+
+
+
+active_thermostat_schedule.ends_at Format: 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.
+
+
+
+
+active_thermostat_schedule.errors Format: List Item format: Object
+
+Errors associated with the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+- error_code Format: String
+
+ Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+
+- message Format: String
+
+ Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+
+
+active_thermostat_schedule.is_override_allowed Format: 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.
+
+
+
+
+active_thermostat_schedule.max_override_period_minutes Format: 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).
+
+
+
+
+active_thermostat_schedule.name Format: String
+
+User-friendly name to identify the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+active_thermostat_schedule.starts_at Format: 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.
+
+
+
+
+active_thermostat_schedule.thermostat_schedule_id Format: UUID
+
+ID of the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+available_climate_presets Format: List Item format: Object
+
+- can_delete Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+- can_edit Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+- can_program Format: 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 Format: String
+
+ Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- cooling_set_point_celsius Format: 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 Format: 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 Format: String
+
+ Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- fan_mode_setting Format: 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`.
+
+ Possible enum values:
+ - `auto`
+ - `on`
+ - `circulate`
+
+
+- heating_set_point_celsius Format: 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 Format: 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 Format: Enum
+
+ Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+ Possible enum values:
+ - `off`
+ - `heat`
+ - `cool`
+ - `heat_cool`
+
+
+- manual_override_allowed Format: Boolean
+
+ {% hint style="warning" %}
+ **Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+ {% endhint %}
+
+ 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).
+
+
+- name Format: String
+
+ User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+
+available_fan_mode_settings Format: List Item format: Enum
+
+
+
+
+available_hvac_mode_settings Format: List Item format: Enum
+
+
+
+
+current_climate_setting Format: Object
+
+
+
+
+current_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+current_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+current_climate_setting.can_program Format: 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.
+
+
+
+
+current_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+current_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+current_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+current_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting Format: Object
+
+{% hint style="warning" %}
+**Deprecated**. use fallback_climate_preset_key to specify a fallback climate preset instead.
+{% endhint %}
+
+
+
+
+default_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+default_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+default_climate_setting.can_program Format: 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.
+
+
+
+
+default_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+default_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+default_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+default_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+fallback_climate_preset_key Format: String
+
+
+
+
+fan_mode_setting Format: Enum
+
+{% hint style="warning" %}
+**Deprecated**. use current_climate_setting.fan_mode_setting instead.
+{% endhint %}
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+is_cooling Format: Boolean
+
+
+
+
+is_fan_running Format: Boolean
+
+
+
+
+is_heating Format: Boolean
+
+
+
+
+is_temporary_manual_override_active Format: Boolean
+
+
+
+
+max_cooling_set_point_celsius Format: Number
+
+
+
+
+max_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+max_heating_set_point_celsius Format: Number
+
+
+
+
+max_heating_set_point_fahrenheit Format: Number
+
+
+
+
+min_cooling_set_point_celsius Format: Number
+
+
+
+
+min_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+min_heating_cooling_delta_celsius Format: Number
+
+
+
+
+min_heating_cooling_delta_fahrenheit Format: Number
+
+
+
+
+min_heating_set_point_celsius Format: Number
+
+
+
+
+min_heating_set_point_fahrenheit Format: Number
+
+
+
+
+relative_humidity Format: Number
+
+
+
+
+temperature_celsius Format: Number
+
+
+
+
+temperature_fahrenheit Format: Number
+
+
+
+
+temperature_threshold Format: Object
+
+
+
+
+temperature_threshold.lower_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.lower_limit_fahrenheit Format: Number
+
+
+
+
+temperature_threshold.upper_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.upper_limit_fahrenheit Format: Number
+
+
+
+
+thermostat_daily_programs Format: List Item format: Object
+
+- created_at Format: Datetime
+
+ Date and time at which the thermostat daily program was created.
+
+
+- device_id Format: UUID
+
+ ID of the desired thermostat device.
+
+
+- name Format: String
+
+ User-friendly name to identify the thermostat daily program.
+
+
+- periods Format: List Item format: Object
+
+ Array of thermostat daily program periods.
+
+- climate_preset_key Format: 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 Format: String
+
+ Time at which the thermostat daily program entry starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+
+
+- thermostat_daily_program_id Format: UUID
+
+ ID of the thermostat daily program.
+
+
+
+
+
+thermostat_weekly_program Format: Object
+
+
+
+
+thermostat_weekly_program.created_at Format: Datetime
+
+Date and time at which the thermostat weekly program was created.
+
+
+
+
+thermostat_weekly_program.device_id Format: UUID
+
+ID of the thermostat device the weekly program is for.
+
+
+
+
+thermostat_weekly_program.friday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Fridays.
+
+
+
+
+thermostat_weekly_program.monday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Mondays.
+
+
+
+
+thermostat_weekly_program.saturday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Saturdays.
+
+
+
+
+thermostat_weekly_program.sunday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Sundays.
+
+
+
+
+thermostat_weekly_program.thursday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Thursdays.
+
+
+
+
+thermostat_weekly_program.tuesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Tuesdays.
+
+
+
+
+thermostat_weekly_program.wednesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Wednesdays.
+
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+partial_backup_access_code_pool
+
+Backup access code unhealthy.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `partial_backup_access_code_pool`
+
+
+
+many_active_backup_codes
+
+Too many backup codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `many_active_backup_codes`
+
+
+
+wyze_device_missing_gateway
+
+Wyze Lock is not connected to a gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_device_missing_gateway`
+
+
+
+functional_offline_device
+
+Device is offline, but has some functionality available.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `functional_offline_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+nest_thermostat_in_manual_eco_mode
+
+Nest thermostat in manual eco mode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `nest_thermostat_in_manual_eco_mode`
+
+
+
+ttlock_lock_gateway_unlocking_not_enabled
+
+Remote Unlock feature not enabled in settings.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_gateway_unlocking_not_enabled`
+
+
+
+ttlock_weak_gateway_signal
+
+Gateway signal is weak.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_weak_gateway_signal`
+
+
+
+temperature_threshold_exceeded
+
+Temperature threshold exceeded.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `temperature_threshold_exceeded`
+
+
+
+device_communication_degraded
+
+Device appears to be unresponsive.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_communication_degraded`
+
+
+
+scheduled_maintenance_window
+
+Scheduled maintenance window detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `scheduled_maintenance_window`
+
+
+
+device_has_flaky_connection
+
+Device has flaky connection.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_has_flaky_connection`
+
+
+
+salto_ks_office_mode
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_office_mode`
+
+
+
+salto_ks_privacy_mode
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_privacy_mode`
+
+
+
+salto_ks_subscription_limit_almost_reached
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_almost_reached`
+
+
+
+unknown_issue_with_phone
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `unknown_issue_with_phone`
+
+
+
+lockly_time_zone_not_configured
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `lockly_time_zone_not_configured`
+
+
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+Unique identifier for the Seam workspace associated with the device.
+
+---
+
+## Errors
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `partial_backup_access_code_pool`
+
+Backup access code unhealthy.
+
+---
+
+### `many_active_backup_codes`
+
+Too many backup codes.
+
+---
+
+### `wyze_device_missing_gateway`
+
+Wyze Lock is not connected to a gateway.
+
+---
+
+### `functional_offline_device`
+
+Device is offline, but has some functionality available.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected.
+
+---
+
+### `nest_thermostat_in_manual_eco_mode`
+
+Nest thermostat in manual eco mode.
+
+---
+
+### `ttlock_lock_gateway_unlocking_not_enabled`
+
+Remote Unlock feature not enabled in settings.
+
+---
+
+### `ttlock_weak_gateway_signal`
+
+Gateway signal is weak.
+
+---
+
+### `temperature_threshold_exceeded`
+
+Temperature threshold exceeded.
+
+---
+
+### `device_communication_degraded`
+
+Device appears to be unresponsive.
+
+---
+
+### `scheduled_maintenance_window`
+
+Scheduled maintenance window detected.
+
+---
+
+### `device_has_flaky_connection`
+
+Device has flaky connection.
+
+---
+
+### `salto_ks_office_mode`
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_privacy_mode`
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_subscription_limit_almost_reached`
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+---
+
+### `unknown_issue_with_phone`
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+---
+
+### `lockly_time_zone_not_configured`
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+---
+
+## Endpoints
+
+### [`/devices/list`](./list.md)
+
+Returns a list of all [devices](../../core-concepts/devices/README.md).
+
+---
+
+## Events
+
+### `device.connected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`. Note that some devices operate entirely in offline mode, so Seam never emits a `device.connected` event for these devices.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.added`
+
+A [device](../../core-concepts/devices/README.md) was added to Seam or was re-added to Seam after having been removed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.added`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.converted_to_unmanaged`
+
+A managed device was successfully converted to an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.converted_to_unmanaged`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.converted_to_managed`
+
+An [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) was successfully converted to a managed device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.converted_to_managed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.connected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.disconnected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.disconnected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.tampered`
+
+A [device](../../core-concepts/devices/README.md) detected that it was tampered with, for example, opened or moved.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.tampered`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.low_battery`
+
+A [device](../../core-concepts/devices/README.md) battery level dropped below the low threshold.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.low_battery`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.battery_status_changed`
+
+A [device](../../core-concepts/devices/README.md) battery status changed since the last `battery_status_changed` event.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+battery_status Format: Enum
+
+Battery status of the device, calculated from the numeric `battery_level` value.
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.battery_status_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.removed`
+
+A [device](../../core-concepts/devices/README.md) was removed externally from the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.removed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.deleted`
+
+A [device](../../core-concepts/devices/README.md) was deleted.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is using a third-party integration that will interfere with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_no_longer_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is no longer using a third-party integration that was interfering with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_no_longer_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_activated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) activated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_activated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_deactivated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) deactivated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_deactivated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_became_flaky`
+
+Seam detected a flaky [device](../../core-concepts/devices/README.md) connection.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_became_flaky`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_stabilized`
+
+Seam detected that a previously-flaky [device](../../core-concepts/devices/README.md) connection stabilized.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_stabilized`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required`
+
+A third-party subscription is required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required.resolved`
+
+A third-party subscription is active or no longer required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required.resolved`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_connected`
+
+An accessory keypad was connected to a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_disconnected`
+
+An accessory keypad was disconnected from a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.name_changed`
+
+The name of a [device](../../core-concepts/devices/README.md) was changed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+device_name Format: String
+
+The new name of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.name_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/devices/list.md b/docs/api/devices/list.md
new file mode 100644
index 000000000..85f09f91e
--- /dev/null
+++ b/docs/api/devices/list.md
@@ -0,0 +1,246 @@
+# List Devices
+
+```
+POST /devices/list ⇒ { devices: [device, …] }
+```
+
+Returns a list of all [devices](../../core-concepts/devices/README.md).
+
+## Authentication Methods
+
+- API key
+- Client session token
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `connect_webview_id`
+
+Format: `UUID`
+Required: No
+
+ID of the Connect Webview by which to filter devices.
+
+***
+
+### `connected_account_id`
+
+Format: `UUID`
+Required: No
+
+ID of the connected account by which to filter.
+
+***
+
+### `connected_account_ids`
+
+Format: `List`
+Item format: `UUID`
+Required: No
+
+Array of IDs of the connected accounts by which to filter devices.
+
+***
+
+### `created_before`
+
+Format: `Datetime`
+Required: No
+
+Date threshold for devices to return. If specified, returns only devices created before the specified date.
+
+***
+
+### `custom_metadata_has`
+
+Format: `Record`
+Required: No
+
+Set of key:value [custom metadata](../../core-concepts/devices/adding-custom-metadata-to-a-device.md) pairs by which you want to filter devices.
+
+***
+
+### `device_ids`
+
+Format: `List`
+Item format: `UUID`
+Required: No
+
+Array of device IDs by which to filter devices.
+
+***
+
+### `device_type`
+
+Format: `Enum`
+Required: No
+
+Device type by which to filter devices.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+***
+
+### `device_types`
+
+Format: `List`
+Item format: `Enum`
+Required: No
+
+Array of device types by which to filter devices.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+***
+
+### `limit`
+
+Format: `Number`
+Required: No
+
+Numerical limit on the number of devices to return.
+
+***
+
+### `manufacturer`
+
+Format: `Enum`
+Required: No
+
+Manufacturer by which to filter devices.
+
+Possible enum values:
+- `akuvox`
+- `august`
+- `avigilon_alta`
+- `brivo`
+- `butterflymx`
+- `doorking`
+- `four_suites`
+- `genie`
+- `igloo`
+- `keywe`
+- `kwikset`
+- `linear`
+- `lockly`
+- `nuki`
+- `philia`
+- `salto`
+- `samsung`
+- `schlage`
+- `seam`
+- `unknown`
+- `wyze`
+- `yale`
+- `minut`
+- `two_n`
+- `ttlock`
+- `nest`
+- `igloohome`
+- `ecobee`
+- `hubitat`
+- `controlbyweb`
+- `smartthings`
+- `dormakaba_oracode`
+- `tedee`
+- `honeywell_resideo`
+- `akiles`
+- `tado`
+- `sensi`
+
+***
+
+### `page_cursor`
+
+Format: `String`
+Required: No
+
+Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
+
+***
+
+### `user_identifier_key`
+
+Format: `String`
+Required: No
+
+Your own internal user ID for the user by which to filter devices.
+
+***
+
+## Return Type
+
+Array<[device](./)>
diff --git a/docs/api/devices/simulate/README.md b/docs/api/devices/simulate/README.md
new file mode 100644
index 000000000..85a705a09
--- /dev/null
+++ b/docs/api/devices/simulate/README.md
@@ -0,0 +1,1567 @@
+# Device Simulations
+
+## `unmanaged_device`
+
+### `can_hvac_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_program_offline_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_program_online_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_lock`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_unlock`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_connection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_disconnection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_removal`
+
+Format: `Boolean`
+
+---
+
+### `can_turn_off_hvac`
+
+Format: `Boolean`
+
+---
+
+### `capabilities_supported`
+
+Format: `List`
+
+Item format: `Enum`
+
+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; and "battery," which indicates that the device can manage battery life and health.
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+Unique identifier for the account associated with the device.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the device object was created.
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device.
+
+---
+
+### `device_type`
+
+Format: `Enum`
+
+Type of the device.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+---
+
+### `location`
+
+Format: `Object`
+
+Location information for the device.
+
+
+
+location_name Format: String
+
+Name of the device location.
+
+
+
+
+timezone Format: String
+
+Time zone of the device location.
+
+
+---
+
+### `properties`
+
+Format: `Object`
+
+
+
+accessory_keypad Format: Object
+
+Represents the accessory keypad state.
+
+
+
+
+accessory_keypad.battery Format: Object
+
+Indicates if the keypad battery properties.
+
+
+
+
+accessory_keypad.battery.level Format: Number
+
+
+
+
+accessory_keypad.is_connected Format: Boolean
+
+Indicates if the accessory_keypad is connected to the device.
+
+
+
+
+battery Format: Object
+
+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.
+
+
+
+
+battery.level Format: Number
+
+
+
+
+battery.status Format: Enum
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+
+battery_level Format: Number
+
+Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
+
+
+
+
+image_alt_text Format: String
+
+Alt text for the device image.
+
+
+
+
+image_url Format: String
+
+Image URL for the device.
+
+
+
+
+manufacturer Format: String
+
+Manufacturer of the device.
+
+
+
+
+model Format: Object
+
+
+
+
+model.accessory_keypad_supported Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+model.can_connect_accessory_keypad Format: Boolean
+
+Indicates whether the device can connect a accessory keypad.
+
+
+
+
+model.display_name Format: String
+
+Display name of the device model.
+
+
+
+
+model.has_built_in_keypad Format: Boolean
+
+Indicates whether the device has a built in accessory keypad.
+
+
+
+
+model.manufacturer_display_name Format: String
+
+Display name that corresponds to the manufacturer-specific terminology for the device.
+
+
+
+
+model.offline_access_codes_supported Format: Boolean
+
+Indicates whether the device supports offline access codes.
+
+
+
+
+model.online_access_codes_supported Format: Boolean
+
+Indicates whether the device supports online access codes.
+
+
+
+
+name Format: String
+
+{% hint style="warning" %}
+**Deprecated**. use device.display_name instead
+{% endhint %}
+
+Name of the device.
+
+
+
+
+offline_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use offline access codes for the device.
+
+
+
+
+online Format: Boolean
+
+Indicates whether the device is online.
+
+
+
+
+online_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use online access codes for the device.
+
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+partial_backup_access_code_pool
+
+Backup access code unhealthy.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `partial_backup_access_code_pool`
+
+
+
+many_active_backup_codes
+
+Too many backup codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `many_active_backup_codes`
+
+
+
+wyze_device_missing_gateway
+
+Wyze Lock is not connected to a gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_device_missing_gateway`
+
+
+
+functional_offline_device
+
+Device is offline, but has some functionality available.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `functional_offline_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+nest_thermostat_in_manual_eco_mode
+
+Nest thermostat in manual eco mode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `nest_thermostat_in_manual_eco_mode`
+
+
+
+ttlock_lock_gateway_unlocking_not_enabled
+
+Remote Unlock feature not enabled in settings.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_gateway_unlocking_not_enabled`
+
+
+
+ttlock_weak_gateway_signal
+
+Gateway signal is weak.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_weak_gateway_signal`
+
+
+
+temperature_threshold_exceeded
+
+Temperature threshold exceeded.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `temperature_threshold_exceeded`
+
+
+
+device_communication_degraded
+
+Device appears to be unresponsive.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_communication_degraded`
+
+
+
+scheduled_maintenance_window
+
+Scheduled maintenance window detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `scheduled_maintenance_window`
+
+
+
+device_has_flaky_connection
+
+Device has flaky connection.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_has_flaky_connection`
+
+
+
+salto_ks_office_mode
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_office_mode`
+
+
+
+salto_ks_privacy_mode
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_privacy_mode`
+
+
+
+salto_ks_subscription_limit_almost_reached
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_almost_reached`
+
+
+
+unknown_issue_with_phone
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `unknown_issue_with_phone`
+
+
+
+lockly_time_zone_not_configured
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `lockly_time_zone_not_configured`
+
+
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+Unique identifier for the Seam workspace associated with the device.
+
+---
+
+## Errors
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `partial_backup_access_code_pool`
+
+Backup access code unhealthy.
+
+---
+
+### `many_active_backup_codes`
+
+Too many backup codes.
+
+---
+
+### `wyze_device_missing_gateway`
+
+Wyze Lock is not connected to a gateway.
+
+---
+
+### `functional_offline_device`
+
+Device is offline, but has some functionality available.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected.
+
+---
+
+### `nest_thermostat_in_manual_eco_mode`
+
+Nest thermostat in manual eco mode.
+
+---
+
+### `ttlock_lock_gateway_unlocking_not_enabled`
+
+Remote Unlock feature not enabled in settings.
+
+---
+
+### `ttlock_weak_gateway_signal`
+
+Gateway signal is weak.
+
+---
+
+### `temperature_threshold_exceeded`
+
+Temperature threshold exceeded.
+
+---
+
+### `device_communication_degraded`
+
+Device appears to be unresponsive.
+
+---
+
+### `scheduled_maintenance_window`
+
+Scheduled maintenance window detected.
+
+---
+
+### `device_has_flaky_connection`
+
+Device has flaky connection.
+
+---
+
+### `salto_ks_office_mode`
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_privacy_mode`
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_subscription_limit_almost_reached`
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+---
+
+### `unknown_issue_with_phone`
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+---
+
+### `lockly_time_zone_not_configured`
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+---
+
+## Endpoints
+
diff --git a/docs/api/events/README.md b/docs/api/events/README.md
new file mode 100644
index 000000000..89e125690
--- /dev/null
+++ b/docs/api/events/README.md
@@ -0,0 +1,134 @@
+# Events
+
+## `event`
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the event was created.
+
+---
+
+### `event_id`
+
+Format: `UUID`
+
+ID of the event.
+
+---
+
+### `event_type`
+
+Format: `Enum`
+
+Possible enum values:
+- `access_code.created`
+- `access_code.changed`
+- `access_code.scheduled_on_device`
+- `access_code.set_on_device`
+- `access_code.removed_from_device`
+- `access_code.delay_in_setting_on_device`
+- `access_code.failed_to_set_on_device`
+- `access_code.deleted`
+- `access_code.delay_in_removing_from_device`
+- `access_code.failed_to_remove_from_device`
+- `access_code.modified_external_to_seam`
+- `access_code.deleted_external_to_seam`
+- `access_code.backup_access_code_pulled`
+- `access_code.unmanaged.converted_to_managed`
+- `access_code.unmanaged.failed_to_convert_to_managed`
+- `access_code.unmanaged.created`
+- `access_code.unmanaged.removed`
+- `access_grant.created`
+- `access_grant.deleted`
+- `access_grant.access_granted_to_all_doors`
+- `access_grant.access_granted_to_door`
+- `access_grant.access_to_door_lost`
+- `access_method.issued`
+- `access_method.revoked`
+- `access_method.card_encoding_required`
+- `acs_system.connected`
+- `acs_system.added`
+- `acs_system.disconnected`
+- `acs_credential.deleted`
+- `acs_credential.issued`
+- `acs_credential.reissued`
+- `acs_credential.invalidated`
+- `acs_user.created`
+- `acs_user.deleted`
+- `acs_encoder.added`
+- `acs_encoder.removed`
+- `acs_access_group.deleted`
+- `acs_entrance.added`
+- `acs_entrance.removed`
+- `client_session.deleted`
+- `connected_account.connected`
+- `connected_account.created`
+- `connected_account.successful_login`
+- `connected_account.disconnected`
+- `connected_account.completed_first_sync`
+- `connected_account.deleted`
+- `connected_account.completed_first_sync_after_reconnection`
+- `action_attempt.lock_door.succeeded`
+- `action_attempt.lock_door.failed`
+- `action_attempt.unlock_door.succeeded`
+- `action_attempt.unlock_door.failed`
+- `connect_webview.login_succeeded`
+- `connect_webview.login_failed`
+- `device.connected`
+- `device.added`
+- `device.converted_to_unmanaged`
+- `device.unmanaged.converted_to_managed`
+- `device.unmanaged.connected`
+- `device.disconnected`
+- `device.unmanaged.disconnected`
+- `device.tampered`
+- `device.low_battery`
+- `device.battery_status_changed`
+- `device.removed`
+- `device.deleted`
+- `device.third_party_integration_detected`
+- `device.third_party_integration_no_longer_detected`
+- `device.salto.privacy_mode_activated`
+- `device.salto.privacy_mode_deactivated`
+- `device.connection_became_flaky`
+- `device.connection_stabilized`
+- `device.error.subscription_required`
+- `device.error.subscription_required.resolved`
+- `device.accessory_keypad_connected`
+- `device.accessory_keypad_disconnected`
+- `noise_sensor.noise_threshold_triggered`
+- `lock.locked`
+- `lock.unlocked`
+- `lock.access_denied`
+- `thermostat.climate_preset_activated`
+- `thermostat.manually_adjusted`
+- `thermostat.temperature_threshold_exceeded`
+- `thermostat.temperature_threshold_no_longer_exceeded`
+- `thermostat.temperature_reached_set_point`
+- `thermostat.temperature_changed`
+- `device.name_changed`
+- `enrollment_automation.deleted`
+- `phone.deactivated`
+
+---
+
+### `occurred_at`
+
+Format: `Datetime`
+
+Date and time at which the event occurred.
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+## Endpoints
+
diff --git a/docs/api/locks/README.md b/docs/api/locks/README.md
new file mode 100644
index 000000000..5a50e6bfb
--- /dev/null
+++ b/docs/api/locks/README.md
@@ -0,0 +1,4516 @@
+# Locks
+
+## `device`
+
+### `can_hvac_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_program_offline_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_program_online_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_lock`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_unlock`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_connection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_disconnection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_removal`
+
+Format: `Boolean`
+
+---
+
+### `can_turn_off_hvac`
+
+Format: `Boolean`
+
+---
+
+### `capabilities_supported`
+
+Format: `List`
+
+Item format: `Enum`
+
+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; and "battery," which indicates that the device can manage battery life and health.
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+Unique identifier for the account associated with the device.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the device object was created.
+
+---
+
+### `custom_metadata`
+
+Format: `Record`
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device.
+
+---
+
+### `device_type`
+
+Format: `Enum`
+
+Type of the device.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+---
+
+### `display_name`
+
+Format: `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.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates whether Seam manages the device.
+
+---
+
+### `location`
+
+Format: `Object`
+
+Location information for the device.
+
+
+
+location_name Format: String
+
+Name of the device location.
+
+
+
+
+timezone Format: String
+
+Time zone of the device location.
+
+
+---
+
+### `nickname`
+
+Format: `String`
+
+Optional nickname to describe the device, settable through Seam
+
+---
+
+### `properties`
+
+Format: `Object`
+
+Properties of the device.
+
+
+
+accessory_keypad Format: Object
+
+Represents the accessory keypad state.
+
+
+
+
+accessory_keypad.battery Format: Object
+
+Indicates if the keypad battery properties.
+
+
+
+
+accessory_keypad.battery.level Format: Number
+
+
+
+
+accessory_keypad.is_connected Format: Boolean
+
+Indicates if the accessory_keypad is connected to the device.
+
+
+
+
+appearance Format: Object
+
+
+
+
+appearance.name Format: String
+
+Name of the device as seen from the provider API and application, not settable through Seam.
+
+
+
+
+battery Format: Object
+
+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.
+
+
+
+
+battery.level Format: Number
+
+
+
+
+battery.status Format: Enum
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+
+battery_level Format: Number
+
+Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
+
+
+
+
+currently_triggering_noise_threshold_ids Format: List Item format: String
+
+Array of noise threshold IDs that are currently triggering.
+
+
+
+
+has_direct_power Format: Boolean
+
+Indicates whether the device has direct power.
+
+
+
+
+image_alt_text Format: String
+
+Alt text for the device image.
+
+
+
+
+image_url Format: String
+
+Image URL for the device.
+
+
+
+
+manufacturer Format: String
+
+Manufacturer of the device.
+
+
+
+
+model Format: Object
+
+
+
+
+model.accessory_keypad_supported Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+model.can_connect_accessory_keypad Format: Boolean
+
+Indicates whether the device can connect a accessory keypad.
+
+
+
+
+model.display_name Format: String
+
+Display name of the device model.
+
+
+
+
+model.has_built_in_keypad Format: Boolean
+
+Indicates whether the device has a built in accessory keypad.
+
+
+
+
+model.manufacturer_display_name Format: String
+
+Display name that corresponds to the manufacturer-specific terminology for the device.
+
+
+
+
+model.offline_access_codes_supported Format: Boolean
+
+Indicates whether the device supports offline access codes.
+
+
+
+
+model.online_access_codes_supported Format: Boolean
+
+Indicates whether the device supports online access codes.
+
+
+
+
+name Format: String
+
+{% hint style="warning" %}
+**Deprecated**. use device.display_name instead
+{% endhint %}
+
+Name of the device.
+
+
+
+
+noise_level_decibels Format: Number
+
+Indicates current noise level in decibels, if the device supports noise detection.
+
+
+
+
+offline_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use offline access codes for the device.
+
+
+
+
+online Format: Boolean
+
+Indicates whether the device is online.
+
+
+
+
+online_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use online access codes for the device.
+
+
+
+
+serial_number Format: String
+
+Serial number of the device.
+
+
+
+
+supports_accessory_keypad Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+supports_offline_access_codes Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use offline_access_codes_enabled
+{% endhint %}
+
+
+
+
+assa_abloy_credential_service_metadata Format: Object
+
+ASSA ABLOY Credential Service metadata for the phone.
+
+
+
+
+assa_abloy_credential_service_metadata.endpoints Format: List Item format: Object
+
+Endpoints associated with the phone.
+
+- endpoint_id Format: String
+
+ ID of the associated endpoint.
+
+
+- is_active Format: Boolean
+
+ Indicated whether the endpoint is active.
+
+
+
+
+
+assa_abloy_credential_service_metadata.has_active_endpoint Format: Boolean
+
+Indicates whether the credential service has active endpoints associated with the phone.
+
+
+
+
+salto_space_credential_service_metadata Format: Object
+
+Salto Space credential service metadata for the phone.
+
+
+
+
+salto_space_credential_service_metadata.has_active_phone Format: Boolean
+
+Indicates whether the credential service has an active associated phone.
+
+
+
+
+akiles_metadata Format: Object
+
+
+
+
+akiles_metadata._member_group_id Format: String
+
+
+
+
+akiles_metadata.gadget_id Format: String
+
+
+
+
+akiles_metadata.gadget_name Format: String
+
+
+
+
+akiles_metadata.product_name Format: String
+
+
+
+
+assa_abloy_vostio_metadata Format: Object
+
+
+
+
+assa_abloy_vostio_metadata.encoder_name Format: String
+
+
+
+
+august_metadata Format: Object
+
+
+
+
+august_metadata.has_keypad Format: Boolean
+
+
+
+
+august_metadata.house_id Format: String
+
+
+
+
+august_metadata.house_name Format: String
+
+
+
+
+august_metadata.keypad_battery_level Format: String
+
+
+
+
+august_metadata.lock_id Format: String
+
+
+
+
+august_metadata.lock_name Format: String
+
+
+
+
+august_metadata.model Format: String
+
+
+
+
+avigilon_alta_metadata Format: Object
+
+
+
+
+avigilon_alta_metadata.entry_name Format: String
+
+
+
+
+avigilon_alta_metadata.entry_relays_total_count Format: Number
+
+
+
+
+avigilon_alta_metadata.org_name Format: String
+
+
+
+
+avigilon_alta_metadata.site_id Format: Number
+
+
+
+
+avigilon_alta_metadata.site_name Format: String
+
+
+
+
+avigilon_alta_metadata.zone_id Format: Number
+
+
+
+
+avigilon_alta_metadata.zone_name Format: String
+
+
+
+
+brivo_metadata Format: Object
+
+
+
+
+brivo_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata Format: Object
+
+
+
+
+controlbyweb_metadata.device_id Format: String
+
+
+
+
+controlbyweb_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata.relay_name Format: String
+
+
+
+
+dormakaba_oracode_metadata Format: Object
+
+
+
+
+dormakaba_oracode_metadata.device_id Format: Object
+
+
+
+
+dormakaba_oracode_metadata.door_id Format: Number
+
+
+
+
+dormakaba_oracode_metadata.door_is_wireless Format: Boolean
+
+
+
+
+dormakaba_oracode_metadata.door_name Format: String
+
+
+
+
+dormakaba_oracode_metadata.iana_timezone Format: String
+
+
+
+
+dormakaba_oracode_metadata.predefined_time_slots Format: List Item format: Object
+
+- check_in_time Format: String
+
+
+- check_out_time Format: String
+
+
+- dormakaba_oracode_user_level_id Format: UUID
+
+
+- ext_dormakaba_oracode_user_level_prefix Format: Number
+
+
+- is_24_hour Format: Boolean
+
+
+- is_biweekly_mode Format: Boolean
+
+
+- is_master Format: Boolean
+
+
+- is_one_shot Format: Boolean
+
+
+- name Format: String
+
+
+- prefix Format: Number
+
+
+
+
+
+dormakaba_oracode_metadata.site_id Format: Number
+
+@DEPRECATED
+
+
+
+
+dormakaba_oracode_metadata.site_name Format: String
+
+
+
+
+ecobee_metadata Format: Object
+
+
+
+
+ecobee_metadata.device_name Format: String
+
+
+
+
+ecobee_metadata.ecobee_device_id Format: String
+
+
+
+
+four_suites_metadata Format: Object
+
+
+
+
+four_suites_metadata.device_id Format: Number
+
+
+
+
+four_suites_metadata.device_name Format: String
+
+
+
+
+four_suites_metadata.reclose_delay_in_seconds Format: Number
+
+
+
+
+genie_metadata Format: Object
+
+
+
+
+genie_metadata.device_name Format: String
+
+
+
+
+genie_metadata.door_name Format: String
+
+
+
+
+honeywell_resideo_metadata Format: Object
+
+
+
+
+honeywell_resideo_metadata.device_name Format: String
+
+
+
+
+honeywell_resideo_metadata.honeywell_resideo_device_id Format: String
+
+
+
+
+hubitat_metadata Format: Object
+
+
+
+
+hubitat_metadata.device_id Format: String
+
+
+
+
+hubitat_metadata.device_label Format: String
+
+
+
+
+hubitat_metadata.device_name Format: String
+
+
+
+
+igloo_metadata Format: Object
+
+
+
+
+igloo_metadata.bridge_id Format: String
+
+
+
+
+igloo_metadata.device_id Format: String
+
+
+
+
+igloo_metadata.model Format: String
+
+
+
+
+igloohome_metadata Format: Object
+
+
+
+
+igloohome_metadata.bridge_id Format: String
+
+
+
+
+igloohome_metadata.bridge_name Format: String
+
+
+
+
+igloohome_metadata.device_id Format: String
+
+
+
+
+igloohome_metadata.device_name Format: String
+
+
+
+
+igloohome_metadata.keypad_id Format: String
+
+
+
+
+kwikset_metadata Format: Object
+
+
+
+
+kwikset_metadata.device_id Format: String
+
+
+
+
+kwikset_metadata.device_name Format: String
+
+
+
+
+kwikset_metadata.model_number Format: String
+
+
+
+
+lockly_metadata Format: Object
+
+
+
+
+lockly_metadata.device_id Format: String
+
+
+
+
+lockly_metadata.device_name Format: String
+
+
+
+
+lockly_metadata.model Format: String
+
+
+
+
+minut_metadata Format: Object
+
+
+
+
+minut_metadata.device_id Format: String
+
+
+
+
+minut_metadata.device_name Format: String
+
+
+
+
+minut_metadata.latest_sensor_values Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.humidity Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.pressure Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.sound Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.sound.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.sound.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.temperature Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.value Format: Number
+
+
+
+
+nest_metadata Format: Object
+
+
+
+
+nest_metadata.device_custom_name Format: String
+
+
+
+
+nest_metadata.device_name Format: String
+
+
+
+
+nest_metadata.display_name Format: String
+
+
+
+
+nest_metadata.nest_device_id Format: String
+
+
+
+
+noiseaware_metadata Format: Object
+
+
+
+
+noiseaware_metadata.device_id Format: String
+
+
+
+
+noiseaware_metadata.device_model Format: Enum
+
+Possible enum values:
+- `indoor`
+- `outdoor`
+
+
+
+
+noiseaware_metadata.device_name Format: String
+
+
+
+
+noiseaware_metadata.noise_level_decibel Format: Number
+
+
+
+
+noiseaware_metadata.noise_level_nrs Format: Number
+
+
+
+
+nuki_metadata Format: Object
+
+
+
+
+nuki_metadata.device_id Format: String
+
+
+
+
+nuki_metadata.device_name Format: String
+
+
+
+
+nuki_metadata.keypad_2_paired Format: Boolean
+
+
+
+
+nuki_metadata.keypad_battery_critical Format: Boolean
+
+
+
+
+nuki_metadata.keypad_paired Format: Boolean
+
+
+
+
+salto_ks_metadata Format: Object
+
+
+
+
+salto_ks_metadata.battery_level Format: String
+
+
+
+
+salto_ks_metadata.customer_reference Format: String
+
+
+
+
+salto_ks_metadata.lock_id Format: String
+
+
+
+
+salto_ks_metadata.lock_type Format: String
+
+
+
+
+salto_ks_metadata.locked_state Format: String
+
+
+
+
+salto_ks_metadata.model Format: String
+
+
+
+
+salto_metadata Format: Object
+
+
+ ---
+ deprecated: Use `salto_ks_metadata ` instead.
+
+
+
+
+
+salto_metadata.battery_level Format: String
+
+
+
+
+salto_metadata.customer_reference Format: String
+
+
+
+
+salto_metadata.lock_id Format: String
+
+
+
+
+salto_metadata.lock_type Format: String
+
+
+
+
+salto_metadata.locked_state Format: String
+
+
+
+
+salto_metadata.model Format: String
+
+
+
+
+schlage_metadata Format: Object
+
+
+
+
+schlage_metadata.device_id Format: String
+
+
+
+
+schlage_metadata.device_name Format: String
+
+
+
+
+schlage_metadata.model Format: String
+
+
+
+
+seam_bridge_metadata Format: Object
+
+
+
+
+seam_bridge_metadata.device_num Format: Number
+
+
+
+
+seam_bridge_metadata.name Format: String
+
+
+
+
+seam_bridge_metadata.unlock_method Format: Enum
+
+Possible enum values:
+- `bridge`
+- `doorking`
+
+
+
+
+sensi_metadata Format: Object
+
+
+
+
+sensi_metadata.device_id Format: String
+
+
+
+
+sensi_metadata.device_name Format: String
+
+
+
+
+sensi_metadata.product_type Format: String
+
+
+
+
+smartthings_metadata Format: Object
+
+
+
+
+smartthings_metadata.device_id Format: String
+
+
+
+
+smartthings_metadata.device_name Format: String
+
+
+
+
+smartthings_metadata.location_id Format: String
+
+
+
+
+smartthings_metadata.model Format: String
+
+
+
+
+tado_metadata Format: Object
+
+
+
+
+tado_metadata.device_type Format: String
+
+
+
+
+tado_metadata.serial_no Format: String
+
+
+
+
+tedee_metadata Format: Object
+
+
+
+
+tedee_metadata.bridge_id Format: Number
+
+
+
+
+tedee_metadata.bridge_name Format: String
+
+
+
+
+tedee_metadata.device_id Format: Number
+
+
+
+
+tedee_metadata.device_model Format: String
+
+
+
+
+tedee_metadata.device_name Format: String
+
+
+
+
+tedee_metadata.keypad_id Format: Number
+
+
+
+
+tedee_metadata.serial_number Format: String
+
+
+
+
+ttlock_metadata Format: Object
+
+
+
+
+ttlock_metadata.feature_value Format: String
+
+
+
+
+ttlock_metadata.features Format: Object
+
+
+
+
+ttlock_metadata.features.incomplete_keyboard_passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.lock_command Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode_management Format: Boolean
+
+
+
+
+ttlock_metadata.features.unlock_via_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.features.wifi Format: Boolean
+
+
+
+
+ttlock_metadata.has_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.lock_alias Format: String
+
+
+
+
+ttlock_metadata.lock_id Format: Number
+
+
+
+
+ttlock_metadata.wireless_keypads Format: List Item format: Object
+
+- wireless_keypad_id Format: Number
+
+
+- wireless_keypad_name Format: String
+
+
+
+
+
+two_n_metadata Format: Object
+
+
+
+
+two_n_metadata.device_id Format: Number
+
+
+
+
+two_n_metadata.device_name Format: String
+
+
+
+
+visionline_metadata Format: Object
+
+
+
+
+visionline_metadata.encoder_id Format: String
+
+
+
+
+wyze_metadata Format: Object
+
+
+
+
+wyze_metadata.device_id Format: String
+
+
+
+
+wyze_metadata.device_info_model Format: String
+
+
+
+
+wyze_metadata.device_name Format: String
+
+
+
+
+wyze_metadata.keypad_uuid Format: String
+
+
+
+
+wyze_metadata.locker_status_hardlock Format: Number
+
+
+
+
+wyze_metadata.product_model Format: String
+
+
+
+
+wyze_metadata.product_name Format: String
+
+
+
+
+wyze_metadata.product_type Format: String
+
+
+
+
+_experimental_supported_code_from_access_codes_lengths Format: List Item format: Number
+
+
+
+
+code_constraints Format: List Item format: Object
+
+- constraint_type Format: Enum
+
+ Possible enum values:
+ - `no_zeros`
+ - `cannot_start_with_12`
+ - `no_triple_consecutive_ints`
+ - `cannot_specify_pin_code`
+ - `pin_code_matches_existing_set`
+ - `start_date_in_future`
+ - `no_ascending_or_descending_sequence`
+ - `at_least_three_unique_digits`
+ - `cannot_contain_089`
+ - `cannot_contain_0789`
+ - `name_length`
+ - `name_must_be_unique`
+
+
+- max_length Format: Number
+
+
+- min_length Format: Number
+
+
+
+
+
+door_open Format: Boolean
+
+
+
+
+has_native_entry_events Format: Boolean
+
+
+
+
+keypad_battery Format: Object
+
+
+
+
+keypad_battery.level Format: Number
+
+
+
+
+locked Format: Boolean
+
+
+
+
+max_active_codes_supported Format: Number
+
+
+
+
+supported_code_lengths Format: List Item format: Number
+
+
+
+
+supports_backup_access_code_pool Format: Boolean
+
+
+
+
+active_thermostat_schedule Format: Object
+
+Represents a [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) that activates a configured [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) on a [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time.
+
+
+
+
+active_thermostat_schedule.climate_preset_key Format: 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).
+
+
+
+
+active_thermostat_schedule.created_at Format: Datetime
+
+Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) was created.
+
+
+
+
+active_thermostat_schedule.device_id Format: UUID
+
+ID of the desired [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) device.
+
+
+
+
+active_thermostat_schedule.ends_at Format: 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.
+
+
+
+
+active_thermostat_schedule.errors Format: List Item format: Object
+
+Errors associated with the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+- error_code Format: String
+
+ Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+
+- message Format: String
+
+ Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+
+
+active_thermostat_schedule.is_override_allowed Format: 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.
+
+
+
+
+active_thermostat_schedule.max_override_period_minutes Format: 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).
+
+
+
+
+active_thermostat_schedule.name Format: String
+
+User-friendly name to identify the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+active_thermostat_schedule.starts_at Format: 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.
+
+
+
+
+active_thermostat_schedule.thermostat_schedule_id Format: UUID
+
+ID of the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+available_climate_presets Format: List Item format: Object
+
+- can_delete Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+- can_edit Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+- can_program Format: 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 Format: String
+
+ Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- cooling_set_point_celsius Format: 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 Format: 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 Format: String
+
+ Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- fan_mode_setting Format: 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`.
+
+ Possible enum values:
+ - `auto`
+ - `on`
+ - `circulate`
+
+
+- heating_set_point_celsius Format: 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 Format: 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 Format: Enum
+
+ Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+ Possible enum values:
+ - `off`
+ - `heat`
+ - `cool`
+ - `heat_cool`
+
+
+- manual_override_allowed Format: Boolean
+
+ {% hint style="warning" %}
+ **Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+ {% endhint %}
+
+ 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).
+
+
+- name Format: String
+
+ User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+
+available_fan_mode_settings Format: List Item format: Enum
+
+
+
+
+available_hvac_mode_settings Format: List Item format: Enum
+
+
+
+
+current_climate_setting Format: Object
+
+
+
+
+current_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+current_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+current_climate_setting.can_program Format: 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.
+
+
+
+
+current_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+current_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+current_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+current_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting Format: Object
+
+{% hint style="warning" %}
+**Deprecated**. use fallback_climate_preset_key to specify a fallback climate preset instead.
+{% endhint %}
+
+
+
+
+default_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+default_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+default_climate_setting.can_program Format: 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.
+
+
+
+
+default_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+default_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+default_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+default_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+fallback_climate_preset_key Format: String
+
+
+
+
+fan_mode_setting Format: Enum
+
+{% hint style="warning" %}
+**Deprecated**. use current_climate_setting.fan_mode_setting instead.
+{% endhint %}
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+is_cooling Format: Boolean
+
+
+
+
+is_fan_running Format: Boolean
+
+
+
+
+is_heating Format: Boolean
+
+
+
+
+is_temporary_manual_override_active Format: Boolean
+
+
+
+
+max_cooling_set_point_celsius Format: Number
+
+
+
+
+max_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+max_heating_set_point_celsius Format: Number
+
+
+
+
+max_heating_set_point_fahrenheit Format: Number
+
+
+
+
+min_cooling_set_point_celsius Format: Number
+
+
+
+
+min_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+min_heating_cooling_delta_celsius Format: Number
+
+
+
+
+min_heating_cooling_delta_fahrenheit Format: Number
+
+
+
+
+min_heating_set_point_celsius Format: Number
+
+
+
+
+min_heating_set_point_fahrenheit Format: Number
+
+
+
+
+relative_humidity Format: Number
+
+
+
+
+temperature_celsius Format: Number
+
+
+
+
+temperature_fahrenheit Format: Number
+
+
+
+
+temperature_threshold Format: Object
+
+
+
+
+temperature_threshold.lower_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.lower_limit_fahrenheit Format: Number
+
+
+
+
+temperature_threshold.upper_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.upper_limit_fahrenheit Format: Number
+
+
+
+
+thermostat_daily_programs Format: List Item format: Object
+
+- created_at Format: Datetime
+
+ Date and time at which the thermostat daily program was created.
+
+
+- device_id Format: UUID
+
+ ID of the desired thermostat device.
+
+
+- name Format: String
+
+ User-friendly name to identify the thermostat daily program.
+
+
+- periods Format: List Item format: Object
+
+ Array of thermostat daily program periods.
+
+- climate_preset_key Format: 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 Format: String
+
+ Time at which the thermostat daily program entry starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+
+
+- thermostat_daily_program_id Format: UUID
+
+ ID of the thermostat daily program.
+
+
+
+
+
+thermostat_weekly_program Format: Object
+
+
+
+
+thermostat_weekly_program.created_at Format: Datetime
+
+Date and time at which the thermostat weekly program was created.
+
+
+
+
+thermostat_weekly_program.device_id Format: UUID
+
+ID of the thermostat device the weekly program is for.
+
+
+
+
+thermostat_weekly_program.friday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Fridays.
+
+
+
+
+thermostat_weekly_program.monday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Mondays.
+
+
+
+
+thermostat_weekly_program.saturday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Saturdays.
+
+
+
+
+thermostat_weekly_program.sunday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Sundays.
+
+
+
+
+thermostat_weekly_program.thursday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Thursdays.
+
+
+
+
+thermostat_weekly_program.tuesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Tuesdays.
+
+
+
+
+thermostat_weekly_program.wednesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Wednesdays.
+
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+partial_backup_access_code_pool
+
+Backup access code unhealthy.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `partial_backup_access_code_pool`
+
+
+
+many_active_backup_codes
+
+Too many backup codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `many_active_backup_codes`
+
+
+
+wyze_device_missing_gateway
+
+Wyze Lock is not connected to a gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_device_missing_gateway`
+
+
+
+functional_offline_device
+
+Device is offline, but has some functionality available.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `functional_offline_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+nest_thermostat_in_manual_eco_mode
+
+Nest thermostat in manual eco mode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `nest_thermostat_in_manual_eco_mode`
+
+
+
+ttlock_lock_gateway_unlocking_not_enabled
+
+Remote Unlock feature not enabled in settings.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_gateway_unlocking_not_enabled`
+
+
+
+ttlock_weak_gateway_signal
+
+Gateway signal is weak.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_weak_gateway_signal`
+
+
+
+temperature_threshold_exceeded
+
+Temperature threshold exceeded.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `temperature_threshold_exceeded`
+
+
+
+device_communication_degraded
+
+Device appears to be unresponsive.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_communication_degraded`
+
+
+
+scheduled_maintenance_window
+
+Scheduled maintenance window detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `scheduled_maintenance_window`
+
+
+
+device_has_flaky_connection
+
+Device has flaky connection.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_has_flaky_connection`
+
+
+
+salto_ks_office_mode
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_office_mode`
+
+
+
+salto_ks_privacy_mode
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_privacy_mode`
+
+
+
+salto_ks_subscription_limit_almost_reached
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_almost_reached`
+
+
+
+unknown_issue_with_phone
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `unknown_issue_with_phone`
+
+
+
+lockly_time_zone_not_configured
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `lockly_time_zone_not_configured`
+
+
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+Unique identifier for the Seam workspace associated with the device.
+
+---
+
+## Errors
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `partial_backup_access_code_pool`
+
+Backup access code unhealthy.
+
+---
+
+### `many_active_backup_codes`
+
+Too many backup codes.
+
+---
+
+### `wyze_device_missing_gateway`
+
+Wyze Lock is not connected to a gateway.
+
+---
+
+### `functional_offline_device`
+
+Device is offline, but has some functionality available.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected.
+
+---
+
+### `nest_thermostat_in_manual_eco_mode`
+
+Nest thermostat in manual eco mode.
+
+---
+
+### `ttlock_lock_gateway_unlocking_not_enabled`
+
+Remote Unlock feature not enabled in settings.
+
+---
+
+### `ttlock_weak_gateway_signal`
+
+Gateway signal is weak.
+
+---
+
+### `temperature_threshold_exceeded`
+
+Temperature threshold exceeded.
+
+---
+
+### `device_communication_degraded`
+
+Device appears to be unresponsive.
+
+---
+
+### `scheduled_maintenance_window`
+
+Scheduled maintenance window detected.
+
+---
+
+### `device_has_flaky_connection`
+
+Device has flaky connection.
+
+---
+
+### `salto_ks_office_mode`
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_privacy_mode`
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_subscription_limit_almost_reached`
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+---
+
+### `unknown_issue_with_phone`
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+---
+
+### `lockly_time_zone_not_configured`
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+---
+
+## Endpoints
+
+
+---
+
+## Events
+
+### `device.connected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`. Note that some devices operate entirely in offline mode, so Seam never emits a `device.connected` event for these devices.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.added`
+
+A [device](../../core-concepts/devices/README.md) was added to Seam or was re-added to Seam after having been removed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.added`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.converted_to_unmanaged`
+
+A managed device was successfully converted to an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.converted_to_unmanaged`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.converted_to_managed`
+
+An [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) was successfully converted to a managed device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.converted_to_managed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.connected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.disconnected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.disconnected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.tampered`
+
+A [device](../../core-concepts/devices/README.md) detected that it was tampered with, for example, opened or moved.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.tampered`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.low_battery`
+
+A [device](../../core-concepts/devices/README.md) battery level dropped below the low threshold.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.low_battery`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.battery_status_changed`
+
+A [device](../../core-concepts/devices/README.md) battery status changed since the last `battery_status_changed` event.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+battery_status Format: Enum
+
+Battery status of the device, calculated from the numeric `battery_level` value.
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.battery_status_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.removed`
+
+A [device](../../core-concepts/devices/README.md) was removed externally from the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.removed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.deleted`
+
+A [device](../../core-concepts/devices/README.md) was deleted.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is using a third-party integration that will interfere with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_no_longer_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is no longer using a third-party integration that was interfering with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_no_longer_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_activated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) activated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_activated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_deactivated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) deactivated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_deactivated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_became_flaky`
+
+Seam detected a flaky [device](../../core-concepts/devices/README.md) connection.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_became_flaky`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_stabilized`
+
+Seam detected that a previously-flaky [device](../../core-concepts/devices/README.md) connection stabilized.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_stabilized`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required`
+
+A third-party subscription is required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required.resolved`
+
+A third-party subscription is active or no longer required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required.resolved`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_connected`
+
+An accessory keypad was connected to a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_disconnected`
+
+An accessory keypad was disconnected from a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.name_changed`
+
+The name of a [device](../../core-concepts/devices/README.md) was changed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+device_name Format: String
+
+The new name of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.name_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/networks/README.md b/docs/api/networks/README.md
new file mode 100644
index 000000000..50ed1e500
--- /dev/null
+++ b/docs/api/networks/README.md
@@ -0,0 +1,30 @@
+# Networks
+
+## `network`
+
+### `created_at`
+
+Format: `Datetime`
+
+---
+
+### `display_name`
+
+Format: `String`
+
+---
+
+### `network_id`
+
+Format: `UUID`
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+---
+
+## Endpoints
+
diff --git a/docs/api/noise_sensors/README.md b/docs/api/noise_sensors/README.md
new file mode 100644
index 000000000..4fd62aa6e
--- /dev/null
+++ b/docs/api/noise_sensors/README.md
@@ -0,0 +1,4516 @@
+# Noise Sensors
+
+## `device`
+
+### `can_hvac_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat`
+
+Format: `Boolean`
+
+---
+
+### `can_hvac_heat_cool`
+
+Format: `Boolean`
+
+---
+
+### `can_program_offline_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_program_online_access_codes`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_lock`
+
+Format: `Boolean`
+
+---
+
+### `can_remotely_unlock`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_connection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_disconnection`
+
+Format: `Boolean`
+
+---
+
+### `can_simulate_removal`
+
+Format: `Boolean`
+
+---
+
+### `can_turn_off_hvac`
+
+Format: `Boolean`
+
+---
+
+### `capabilities_supported`
+
+Format: `List`
+
+Item format: `Enum`
+
+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; and "battery," which indicates that the device can manage battery life and health.
+
+---
+
+### `connected_account_id`
+
+Format: `UUID`
+
+Unique identifier for the account associated with the device.
+
+---
+
+### `created_at`
+
+Format: `Datetime`
+
+Date and time at which the device object was created.
+
+---
+
+### `custom_metadata`
+
+Format: `Record`
+
+---
+
+### `device_id`
+
+Format: `UUID`
+
+Unique identifier for the device.
+
+---
+
+### `device_type`
+
+Format: `Enum`
+
+Type of the device.
+
+Possible enum values:
+- `akuvox_lock`
+- `august_lock`
+- `brivo_access_point`
+- `butterflymx_panel`
+- `avigilon_alta_entry`
+- `doorking_lock`
+- `genie_door`
+- `igloo_lock`
+- `linear_lock`
+- `lockly_lock`
+- `kwikset_lock`
+- `nuki_lock`
+- `salto_lock`
+- `schlage_lock`
+- `seam_relay`
+- `smartthings_lock`
+- `wyze_lock`
+- `yale_lock`
+- `two_n_intercom`
+- `controlbyweb_device`
+- `ttlock_lock`
+- `igloohome_lock`
+- `hubitat_lock`
+- `four_suites_door`
+- `dormakaba_oracode_door`
+- `tedee_lock`
+- `akiles_lock`
+- `noiseaware_activity_zone`
+- `minut_sensor`
+- `ecobee_thermostat`
+- `nest_thermostat`
+- `honeywell_resideo_thermostat`
+- `tado_thermostat`
+- `sensi_thermostat`
+- `ios_phone`
+- `android_phone`
+
+---
+
+### `display_name`
+
+Format: `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.
+
+---
+
+### [`errors`](./#errors-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `error_code` field.
+
+Variants:
+
+account_disconnected
+
+Account is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `account_disconnected`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+salto_ks_subscription_limit_exceeded
+
+Salto site user limit reached.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_exceeded`
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_offline
+
+Device is offline
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_offline`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_removed
+
+Device has been removed
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_removed`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+hub_disconnected
+
+Hub is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `hub_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+device_disconnected
+
+Device is disconnected
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_disconnected`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+empty_backup_access_code_pool
+
+The backup access code pool is empty.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `empty_backup_access_code_pool`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_not_authorized
+
+User is not authorized to use the August Lock.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_not_authorized`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+august_lock_missing_bridge
+
+Lock is not connected to the Seam Bridge.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `august_lock_missing_bridge`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+ttlock_lock_not_paired_to_gateway
+
+Lock is not paired with a Gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_not_paired_to_gateway`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+missing_device_credentials
+
+Missing device credentials.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `missing_device_credentials`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+auxiliary_heat_running
+
+The auxiliary heat is running.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `auxiliary_heat_running`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+subscription_required
+
+Subscription required to connect.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `subscription_required`
+
+---
+
+**`is_device_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+invalid_credentials
+
+Credentials provided were invalid.
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `invalid_credentials`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+bridge_disconnected
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+**`created_at`**
+Format: `Datetime`
+
+
+Date and time at which Seam created the error.
+
+---
+
+**`error_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `bridge_disconnected`
+
+---
+
+**`is_bridge_error`**
+Format: `Boolean`
+
+
+---
+
+**`is_connected_account_error`**
+Format: `Boolean`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+
+
+---
+
+### `is_managed`
+
+Format: `Boolean`
+
+Indicates whether Seam manages the device.
+
+---
+
+### `location`
+
+Format: `Object`
+
+Location information for the device.
+
+
+
+location_name Format: String
+
+Name of the device location.
+
+
+
+
+timezone Format: String
+
+Time zone of the device location.
+
+
+---
+
+### `nickname`
+
+Format: `String`
+
+Optional nickname to describe the device, settable through Seam
+
+---
+
+### `properties`
+
+Format: `Object`
+
+Properties of the device.
+
+
+
+accessory_keypad Format: Object
+
+Represents the accessory keypad state.
+
+
+
+
+accessory_keypad.battery Format: Object
+
+Indicates if the keypad battery properties.
+
+
+
+
+accessory_keypad.battery.level Format: Number
+
+
+
+
+accessory_keypad.is_connected Format: Boolean
+
+Indicates if the accessory_keypad is connected to the device.
+
+
+
+
+appearance Format: Object
+
+
+
+
+appearance.name Format: String
+
+Name of the device as seen from the provider API and application, not settable through Seam.
+
+
+
+
+battery Format: Object
+
+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.
+
+
+
+
+battery.level Format: Number
+
+
+
+
+battery.status Format: Enum
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+
+battery_level Format: Number
+
+Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.
+
+
+
+
+currently_triggering_noise_threshold_ids Format: List Item format: String
+
+Array of noise threshold IDs that are currently triggering.
+
+
+
+
+has_direct_power Format: Boolean
+
+Indicates whether the device has direct power.
+
+
+
+
+image_alt_text Format: String
+
+Alt text for the device image.
+
+
+
+
+image_url Format: String
+
+Image URL for the device.
+
+
+
+
+manufacturer Format: String
+
+Manufacturer of the device.
+
+
+
+
+model Format: Object
+
+
+
+
+model.accessory_keypad_supported Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+model.can_connect_accessory_keypad Format: Boolean
+
+Indicates whether the device can connect a accessory keypad.
+
+
+
+
+model.display_name Format: String
+
+Display name of the device model.
+
+
+
+
+model.has_built_in_keypad Format: Boolean
+
+Indicates whether the device has a built in accessory keypad.
+
+
+
+
+model.manufacturer_display_name Format: String
+
+Display name that corresponds to the manufacturer-specific terminology for the device.
+
+
+
+
+model.offline_access_codes_supported Format: Boolean
+
+Indicates whether the device supports offline access codes.
+
+
+
+
+model.online_access_codes_supported Format: Boolean
+
+Indicates whether the device supports online access codes.
+
+
+
+
+name Format: String
+
+{% hint style="warning" %}
+**Deprecated**. use device.display_name instead
+{% endhint %}
+
+Name of the device.
+
+
+
+
+noise_level_decibels Format: Number
+
+Indicates current noise level in decibels, if the device supports noise detection.
+
+
+
+
+offline_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use offline access codes for the device.
+
+
+
+
+online Format: Boolean
+
+Indicates whether the device is online.
+
+
+
+
+online_access_codes_enabled Format: Boolean
+
+Indicates whether it is currently possible to use online access codes for the device.
+
+
+
+
+serial_number Format: String
+
+Serial number of the device.
+
+
+
+
+supports_accessory_keypad Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use device.properties.model.can_connect_accessory_keypad
+{% endhint %}
+
+
+
+
+supports_offline_access_codes Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. use offline_access_codes_enabled
+{% endhint %}
+
+
+
+
+assa_abloy_credential_service_metadata Format: Object
+
+ASSA ABLOY Credential Service metadata for the phone.
+
+
+
+
+assa_abloy_credential_service_metadata.endpoints Format: List Item format: Object
+
+Endpoints associated with the phone.
+
+- endpoint_id Format: String
+
+ ID of the associated endpoint.
+
+
+- is_active Format: Boolean
+
+ Indicated whether the endpoint is active.
+
+
+
+
+
+assa_abloy_credential_service_metadata.has_active_endpoint Format: Boolean
+
+Indicates whether the credential service has active endpoints associated with the phone.
+
+
+
+
+salto_space_credential_service_metadata Format: Object
+
+Salto Space credential service metadata for the phone.
+
+
+
+
+salto_space_credential_service_metadata.has_active_phone Format: Boolean
+
+Indicates whether the credential service has an active associated phone.
+
+
+
+
+akiles_metadata Format: Object
+
+
+
+
+akiles_metadata._member_group_id Format: String
+
+
+
+
+akiles_metadata.gadget_id Format: String
+
+
+
+
+akiles_metadata.gadget_name Format: String
+
+
+
+
+akiles_metadata.product_name Format: String
+
+
+
+
+assa_abloy_vostio_metadata Format: Object
+
+
+
+
+assa_abloy_vostio_metadata.encoder_name Format: String
+
+
+
+
+august_metadata Format: Object
+
+
+
+
+august_metadata.has_keypad Format: Boolean
+
+
+
+
+august_metadata.house_id Format: String
+
+
+
+
+august_metadata.house_name Format: String
+
+
+
+
+august_metadata.keypad_battery_level Format: String
+
+
+
+
+august_metadata.lock_id Format: String
+
+
+
+
+august_metadata.lock_name Format: String
+
+
+
+
+august_metadata.model Format: String
+
+
+
+
+avigilon_alta_metadata Format: Object
+
+
+
+
+avigilon_alta_metadata.entry_name Format: String
+
+
+
+
+avigilon_alta_metadata.entry_relays_total_count Format: Number
+
+
+
+
+avigilon_alta_metadata.org_name Format: String
+
+
+
+
+avigilon_alta_metadata.site_id Format: Number
+
+
+
+
+avigilon_alta_metadata.site_name Format: String
+
+
+
+
+avigilon_alta_metadata.zone_id Format: Number
+
+
+
+
+avigilon_alta_metadata.zone_name Format: String
+
+
+
+
+brivo_metadata Format: Object
+
+
+
+
+brivo_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata Format: Object
+
+
+
+
+controlbyweb_metadata.device_id Format: String
+
+
+
+
+controlbyweb_metadata.device_name Format: String
+
+
+
+
+controlbyweb_metadata.relay_name Format: String
+
+
+
+
+dormakaba_oracode_metadata Format: Object
+
+
+
+
+dormakaba_oracode_metadata.device_id Format: Object
+
+
+
+
+dormakaba_oracode_metadata.door_id Format: Number
+
+
+
+
+dormakaba_oracode_metadata.door_is_wireless Format: Boolean
+
+
+
+
+dormakaba_oracode_metadata.door_name Format: String
+
+
+
+
+dormakaba_oracode_metadata.iana_timezone Format: String
+
+
+
+
+dormakaba_oracode_metadata.predefined_time_slots Format: List Item format: Object
+
+- check_in_time Format: String
+
+
+- check_out_time Format: String
+
+
+- dormakaba_oracode_user_level_id Format: UUID
+
+
+- ext_dormakaba_oracode_user_level_prefix Format: Number
+
+
+- is_24_hour Format: Boolean
+
+
+- is_biweekly_mode Format: Boolean
+
+
+- is_master Format: Boolean
+
+
+- is_one_shot Format: Boolean
+
+
+- name Format: String
+
+
+- prefix Format: Number
+
+
+
+
+
+dormakaba_oracode_metadata.site_id Format: Number
+
+@DEPRECATED
+
+
+
+
+dormakaba_oracode_metadata.site_name Format: String
+
+
+
+
+ecobee_metadata Format: Object
+
+
+
+
+ecobee_metadata.device_name Format: String
+
+
+
+
+ecobee_metadata.ecobee_device_id Format: String
+
+
+
+
+four_suites_metadata Format: Object
+
+
+
+
+four_suites_metadata.device_id Format: Number
+
+
+
+
+four_suites_metadata.device_name Format: String
+
+
+
+
+four_suites_metadata.reclose_delay_in_seconds Format: Number
+
+
+
+
+genie_metadata Format: Object
+
+
+
+
+genie_metadata.device_name Format: String
+
+
+
+
+genie_metadata.door_name Format: String
+
+
+
+
+honeywell_resideo_metadata Format: Object
+
+
+
+
+honeywell_resideo_metadata.device_name Format: String
+
+
+
+
+honeywell_resideo_metadata.honeywell_resideo_device_id Format: String
+
+
+
+
+hubitat_metadata Format: Object
+
+
+
+
+hubitat_metadata.device_id Format: String
+
+
+
+
+hubitat_metadata.device_label Format: String
+
+
+
+
+hubitat_metadata.device_name Format: String
+
+
+
+
+igloo_metadata Format: Object
+
+
+
+
+igloo_metadata.bridge_id Format: String
+
+
+
+
+igloo_metadata.device_id Format: String
+
+
+
+
+igloo_metadata.model Format: String
+
+
+
+
+igloohome_metadata Format: Object
+
+
+
+
+igloohome_metadata.bridge_id Format: String
+
+
+
+
+igloohome_metadata.bridge_name Format: String
+
+
+
+
+igloohome_metadata.device_id Format: String
+
+
+
+
+igloohome_metadata.device_name Format: String
+
+
+
+
+igloohome_metadata.keypad_id Format: String
+
+
+
+
+kwikset_metadata Format: Object
+
+
+
+
+kwikset_metadata.device_id Format: String
+
+
+
+
+kwikset_metadata.device_name Format: String
+
+
+
+
+kwikset_metadata.model_number Format: String
+
+
+
+
+lockly_metadata Format: Object
+
+
+
+
+lockly_metadata.device_id Format: String
+
+
+
+
+lockly_metadata.device_name Format: String
+
+
+
+
+lockly_metadata.model Format: String
+
+
+
+
+minut_metadata Format: Object
+
+
+
+
+minut_metadata.device_id Format: String
+
+
+
+
+minut_metadata.device_name Format: String
+
+
+
+
+minut_metadata.latest_sensor_values Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.accelerometer_z.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.humidity Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.humidity.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.pressure Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.pressure.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.sound Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.sound.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.sound.value Format: Number
+
+
+
+
+minut_metadata.latest_sensor_values.temperature Format: Object
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.time Format: String
+
+
+
+
+minut_metadata.latest_sensor_values.temperature.value Format: Number
+
+
+
+
+nest_metadata Format: Object
+
+
+
+
+nest_metadata.device_custom_name Format: String
+
+
+
+
+nest_metadata.device_name Format: String
+
+
+
+
+nest_metadata.display_name Format: String
+
+
+
+
+nest_metadata.nest_device_id Format: String
+
+
+
+
+noiseaware_metadata Format: Object
+
+
+
+
+noiseaware_metadata.device_id Format: String
+
+
+
+
+noiseaware_metadata.device_model Format: Enum
+
+Possible enum values:
+- `indoor`
+- `outdoor`
+
+
+
+
+noiseaware_metadata.device_name Format: String
+
+
+
+
+noiseaware_metadata.noise_level_decibel Format: Number
+
+
+
+
+noiseaware_metadata.noise_level_nrs Format: Number
+
+
+
+
+nuki_metadata Format: Object
+
+
+
+
+nuki_metadata.device_id Format: String
+
+
+
+
+nuki_metadata.device_name Format: String
+
+
+
+
+nuki_metadata.keypad_2_paired Format: Boolean
+
+
+
+
+nuki_metadata.keypad_battery_critical Format: Boolean
+
+
+
+
+nuki_metadata.keypad_paired Format: Boolean
+
+
+
+
+salto_ks_metadata Format: Object
+
+
+
+
+salto_ks_metadata.battery_level Format: String
+
+
+
+
+salto_ks_metadata.customer_reference Format: String
+
+
+
+
+salto_ks_metadata.lock_id Format: String
+
+
+
+
+salto_ks_metadata.lock_type Format: String
+
+
+
+
+salto_ks_metadata.locked_state Format: String
+
+
+
+
+salto_ks_metadata.model Format: String
+
+
+
+
+salto_metadata Format: Object
+
+
+ ---
+ deprecated: Use `salto_ks_metadata ` instead.
+
+
+
+
+
+salto_metadata.battery_level Format: String
+
+
+
+
+salto_metadata.customer_reference Format: String
+
+
+
+
+salto_metadata.lock_id Format: String
+
+
+
+
+salto_metadata.lock_type Format: String
+
+
+
+
+salto_metadata.locked_state Format: String
+
+
+
+
+salto_metadata.model Format: String
+
+
+
+
+schlage_metadata Format: Object
+
+
+
+
+schlage_metadata.device_id Format: String
+
+
+
+
+schlage_metadata.device_name Format: String
+
+
+
+
+schlage_metadata.model Format: String
+
+
+
+
+seam_bridge_metadata Format: Object
+
+
+
+
+seam_bridge_metadata.device_num Format: Number
+
+
+
+
+seam_bridge_metadata.name Format: String
+
+
+
+
+seam_bridge_metadata.unlock_method Format: Enum
+
+Possible enum values:
+- `bridge`
+- `doorking`
+
+
+
+
+sensi_metadata Format: Object
+
+
+
+
+sensi_metadata.device_id Format: String
+
+
+
+
+sensi_metadata.device_name Format: String
+
+
+
+
+sensi_metadata.product_type Format: String
+
+
+
+
+smartthings_metadata Format: Object
+
+
+
+
+smartthings_metadata.device_id Format: String
+
+
+
+
+smartthings_metadata.device_name Format: String
+
+
+
+
+smartthings_metadata.location_id Format: String
+
+
+
+
+smartthings_metadata.model Format: String
+
+
+
+
+tado_metadata Format: Object
+
+
+
+
+tado_metadata.device_type Format: String
+
+
+
+
+tado_metadata.serial_no Format: String
+
+
+
+
+tedee_metadata Format: Object
+
+
+
+
+tedee_metadata.bridge_id Format: Number
+
+
+
+
+tedee_metadata.bridge_name Format: String
+
+
+
+
+tedee_metadata.device_id Format: Number
+
+
+
+
+tedee_metadata.device_model Format: String
+
+
+
+
+tedee_metadata.device_name Format: String
+
+
+
+
+tedee_metadata.keypad_id Format: Number
+
+
+
+
+tedee_metadata.serial_number Format: String
+
+
+
+
+ttlock_metadata Format: Object
+
+
+
+
+ttlock_metadata.feature_value Format: String
+
+
+
+
+ttlock_metadata.features Format: Object
+
+
+
+
+ttlock_metadata.features.incomplete_keyboard_passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.lock_command Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode Format: Boolean
+
+
+
+
+ttlock_metadata.features.passcode_management Format: Boolean
+
+
+
+
+ttlock_metadata.features.unlock_via_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.features.wifi Format: Boolean
+
+
+
+
+ttlock_metadata.has_gateway Format: Boolean
+
+
+
+
+ttlock_metadata.lock_alias Format: String
+
+
+
+
+ttlock_metadata.lock_id Format: Number
+
+
+
+
+ttlock_metadata.wireless_keypads Format: List Item format: Object
+
+- wireless_keypad_id Format: Number
+
+
+- wireless_keypad_name Format: String
+
+
+
+
+
+two_n_metadata Format: Object
+
+
+
+
+two_n_metadata.device_id Format: Number
+
+
+
+
+two_n_metadata.device_name Format: String
+
+
+
+
+visionline_metadata Format: Object
+
+
+
+
+visionline_metadata.encoder_id Format: String
+
+
+
+
+wyze_metadata Format: Object
+
+
+
+
+wyze_metadata.device_id Format: String
+
+
+
+
+wyze_metadata.device_info_model Format: String
+
+
+
+
+wyze_metadata.device_name Format: String
+
+
+
+
+wyze_metadata.keypad_uuid Format: String
+
+
+
+
+wyze_metadata.locker_status_hardlock Format: Number
+
+
+
+
+wyze_metadata.product_model Format: String
+
+
+
+
+wyze_metadata.product_name Format: String
+
+
+
+
+wyze_metadata.product_type Format: String
+
+
+
+
+_experimental_supported_code_from_access_codes_lengths Format: List Item format: Number
+
+
+
+
+code_constraints Format: List Item format: Object
+
+- constraint_type Format: Enum
+
+ Possible enum values:
+ - `no_zeros`
+ - `cannot_start_with_12`
+ - `no_triple_consecutive_ints`
+ - `cannot_specify_pin_code`
+ - `pin_code_matches_existing_set`
+ - `start_date_in_future`
+ - `no_ascending_or_descending_sequence`
+ - `at_least_three_unique_digits`
+ - `cannot_contain_089`
+ - `cannot_contain_0789`
+ - `name_length`
+ - `name_must_be_unique`
+
+
+- max_length Format: Number
+
+
+- min_length Format: Number
+
+
+
+
+
+door_open Format: Boolean
+
+
+
+
+has_native_entry_events Format: Boolean
+
+
+
+
+keypad_battery Format: Object
+
+
+
+
+keypad_battery.level Format: Number
+
+
+
+
+locked Format: Boolean
+
+
+
+
+max_active_codes_supported Format: Number
+
+
+
+
+supported_code_lengths Format: List Item format: Number
+
+
+
+
+supports_backup_access_code_pool Format: Boolean
+
+
+
+
+active_thermostat_schedule Format: Object
+
+Represents a [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) that activates a configured [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) on a [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time.
+
+
+
+
+active_thermostat_schedule.climate_preset_key Format: 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).
+
+
+
+
+active_thermostat_schedule.created_at Format: Datetime
+
+Date and time at which the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) was created.
+
+
+
+
+active_thermostat_schedule.device_id Format: UUID
+
+ID of the desired [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) device.
+
+
+
+
+active_thermostat_schedule.ends_at Format: 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.
+
+
+
+
+active_thermostat_schedule.errors Format: List Item format: Object
+
+Errors associated with the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+- error_code Format: String
+
+ Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
+
+
+- message Format: String
+
+ Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
+
+
+
+
+
+active_thermostat_schedule.is_override_allowed Format: 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.
+
+
+
+
+active_thermostat_schedule.max_override_period_minutes Format: 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).
+
+
+
+
+active_thermostat_schedule.name Format: String
+
+User-friendly name to identify the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+active_thermostat_schedule.starts_at Format: 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.
+
+
+
+
+active_thermostat_schedule.thermostat_schedule_id Format: UUID
+
+ID of the [thermostat schedule](../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md).
+
+
+
+
+available_climate_presets Format: List Item format: Object
+
+- can_delete Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+- can_edit Format: Boolean
+
+ Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+- can_program Format: 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 Format: String
+
+ Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- cooling_set_point_celsius Format: 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 Format: 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 Format: String
+
+ Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+- fan_mode_setting Format: 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`.
+
+ Possible enum values:
+ - `auto`
+ - `on`
+ - `circulate`
+
+
+- heating_set_point_celsius Format: 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 Format: 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 Format: Enum
+
+ Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+ Possible enum values:
+ - `off`
+ - `heat`
+ - `cool`
+ - `heat_cool`
+
+
+- manual_override_allowed Format: Boolean
+
+ {% hint style="warning" %}
+ **Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+ {% endhint %}
+
+ 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).
+
+
+- name Format: String
+
+ User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+
+available_fan_mode_settings Format: List Item format: Enum
+
+
+
+
+available_hvac_mode_settings Format: List Item format: Enum
+
+
+
+
+current_climate_setting Format: Object
+
+
+
+
+current_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+current_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+current_climate_setting.can_program Format: 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.
+
+
+
+
+current_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+current_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+current_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+current_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+current_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+current_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting Format: Object
+
+{% hint style="warning" %}
+**Deprecated**. use fallback_climate_preset_key to specify a fallback climate preset instead.
+{% endhint %}
+
+
+
+
+default_climate_setting.can_delete Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be deleted.
+
+
+
+
+default_climate_setting.can_edit Format: Boolean
+
+Indicates whether the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md) key can be edited.
+
+
+
+
+default_climate_setting.can_program Format: 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.
+
+
+
+
+default_climate_setting.climate_preset_key Format: String
+
+Unique key to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.cooling_set_point_celsius Format: Number
+
+Temperature to which the thermostat should cool (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.cooling_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should cool (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.display_name Format: String
+
+Display name for the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+default_climate_setting.fan_mode_setting Format: 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`.
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+default_climate_setting.heating_set_point_celsius Format: Number
+
+Temperature to which the thermostat should heat (in °C). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.heating_set_point_fahrenheit Format: Number
+
+Temperature to which the thermostat should heat (in °F). See also [Set Points](../../capability-guides/thermostats/understanding-thermostat-concepts/set-points.md).
+
+
+
+
+default_climate_setting.hvac_mode_setting Format: Enum
+
+Desired [HVAC mode](../../capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode.md) setting, such as `heat`, `cool`, `heat_cool`, or `off`.
+
+Possible enum values:
+- `off`
+- `heat`
+- `cool`
+- `heat_cool`
+
+
+
+
+default_climate_setting.manual_override_allowed Format: Boolean
+
+{% hint style="warning" %}
+**Deprecated**. Use 'thermostat_schedule.is_override_allowed'
+{% endhint %}
+
+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).
+
+
+
+
+default_climate_setting.name Format: String
+
+User-friendly name to identify the [climate preset](../../capability-guides/thermostats/creating-and-managing-climate-presets/README.md).
+
+
+
+
+fallback_climate_preset_key Format: String
+
+
+
+
+fan_mode_setting Format: Enum
+
+{% hint style="warning" %}
+**Deprecated**. use current_climate_setting.fan_mode_setting instead.
+{% endhint %}
+
+Possible enum values:
+- `auto`
+- `on`
+- `circulate`
+
+
+
+
+is_cooling Format: Boolean
+
+
+
+
+is_fan_running Format: Boolean
+
+
+
+
+is_heating Format: Boolean
+
+
+
+
+is_temporary_manual_override_active Format: Boolean
+
+
+
+
+max_cooling_set_point_celsius Format: Number
+
+
+
+
+max_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+max_heating_set_point_celsius Format: Number
+
+
+
+
+max_heating_set_point_fahrenheit Format: Number
+
+
+
+
+min_cooling_set_point_celsius Format: Number
+
+
+
+
+min_cooling_set_point_fahrenheit Format: Number
+
+
+
+
+min_heating_cooling_delta_celsius Format: Number
+
+
+
+
+min_heating_cooling_delta_fahrenheit Format: Number
+
+
+
+
+min_heating_set_point_celsius Format: Number
+
+
+
+
+min_heating_set_point_fahrenheit Format: Number
+
+
+
+
+relative_humidity Format: Number
+
+
+
+
+temperature_celsius Format: Number
+
+
+
+
+temperature_fahrenheit Format: Number
+
+
+
+
+temperature_threshold Format: Object
+
+
+
+
+temperature_threshold.lower_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.lower_limit_fahrenheit Format: Number
+
+
+
+
+temperature_threshold.upper_limit_celsius Format: Number
+
+
+
+
+temperature_threshold.upper_limit_fahrenheit Format: Number
+
+
+
+
+thermostat_daily_programs Format: List Item format: Object
+
+- created_at Format: Datetime
+
+ Date and time at which the thermostat daily program was created.
+
+
+- device_id Format: UUID
+
+ ID of the desired thermostat device.
+
+
+- name Format: String
+
+ User-friendly name to identify the thermostat daily program.
+
+
+- periods Format: List Item format: Object
+
+ Array of thermostat daily program periods.
+
+- climate_preset_key Format: 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 Format: String
+
+ Time at which the thermostat daily program entry starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
+
+
+
+- thermostat_daily_program_id Format: UUID
+
+ ID of the thermostat daily program.
+
+
+
+
+
+thermostat_weekly_program Format: Object
+
+
+
+
+thermostat_weekly_program.created_at Format: Datetime
+
+Date and time at which the thermostat weekly program was created.
+
+
+
+
+thermostat_weekly_program.device_id Format: UUID
+
+ID of the thermostat device the weekly program is for.
+
+
+
+
+thermostat_weekly_program.friday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Fridays.
+
+
+
+
+thermostat_weekly_program.monday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Mondays.
+
+
+
+
+thermostat_weekly_program.saturday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Saturdays.
+
+
+
+
+thermostat_weekly_program.sunday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Sundays.
+
+
+
+
+thermostat_weekly_program.thursday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Thursdays.
+
+
+
+
+thermostat_weekly_program.tuesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Tuesdays.
+
+
+
+
+thermostat_weekly_program.wednesday_program_id Format: UUID
+
+ID of the thermostat daily program to run on Wednesdays.
+
+
+---
+
+### [`warnings`](./#warnings-1)
+
+Format: `List`
+
+Item format: `Object`
+
+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.
+
+The specific structure of each object in this list depends on the value of its `warning_code` field.
+
+Variants:
+
+partial_backup_access_code_pool
+
+Backup access code unhealthy.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `partial_backup_access_code_pool`
+
+
+
+many_active_backup_codes
+
+Too many backup codes.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `many_active_backup_codes`
+
+
+
+wyze_device_missing_gateway
+
+Wyze Lock is not connected to a gateway.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `wyze_device_missing_gateway`
+
+
+
+functional_offline_device
+
+Device is offline, but has some functionality available.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `functional_offline_device`
+
+
+
+third_party_integration_detected
+
+Third-party integration detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `third_party_integration_detected`
+
+
+
+nest_thermostat_in_manual_eco_mode
+
+Nest thermostat in manual eco mode.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `nest_thermostat_in_manual_eco_mode`
+
+
+
+ttlock_lock_gateway_unlocking_not_enabled
+
+Remote Unlock feature not enabled in settings.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_lock_gateway_unlocking_not_enabled`
+
+
+
+ttlock_weak_gateway_signal
+
+Gateway signal is weak.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `ttlock_weak_gateway_signal`
+
+
+
+temperature_threshold_exceeded
+
+Temperature threshold exceeded.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `temperature_threshold_exceeded`
+
+
+
+device_communication_degraded
+
+Device appears to be unresponsive.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_communication_degraded`
+
+
+
+scheduled_maintenance_window
+
+Scheduled maintenance window detected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `scheduled_maintenance_window`
+
+
+
+device_has_flaky_connection
+
+Device has flaky connection.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `device_has_flaky_connection`
+
+
+
+salto_ks_office_mode
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_office_mode`
+
+
+
+salto_ks_privacy_mode
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_privacy_mode`
+
+
+
+salto_ks_subscription_limit_almost_reached
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `salto_ks_subscription_limit_almost_reached`
+
+
+
+unknown_issue_with_phone
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `unknown_issue_with_phone`
+
+
+
+lockly_time_zone_not_configured
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+**`created_at`**
+Format: `Datetime`
+
+
+---
+
+**`message`**
+Format: `String`
+
+
+---
+
+**`warning_code`**
+Format: `Enum`
+
+
+Unique identifier of the type of warning. Enables quick recognition and categorization of the issue.
+
+Possible enum values:
+- `lockly_time_zone_not_configured`
+
+
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+Unique identifier for the Seam workspace associated with the device.
+
+---
+
+## Errors
+
+### `account_disconnected`
+
+Account is disconnected
+
+---
+
+### `salto_ks_subscription_limit_exceeded`
+
+Salto site user limit reached.
+
+---
+
+### `device_offline`
+
+Device is offline
+
+---
+
+### `device_removed`
+
+Device has been removed
+
+---
+
+### `hub_disconnected`
+
+Hub is disconnected
+
+---
+
+### `device_disconnected`
+
+Device is disconnected
+
+---
+
+### `empty_backup_access_code_pool`
+
+The backup access code pool is empty.
+
+---
+
+### `august_lock_not_authorized`
+
+User is not authorized to use the August Lock.
+
+---
+
+### `august_lock_missing_bridge`
+
+Lock is not connected to the Seam Bridge.
+
+---
+
+### `ttlock_lock_not_paired_to_gateway`
+
+Lock is not paired with a Gateway.
+
+---
+
+### `missing_device_credentials`
+
+Missing device credentials.
+
+---
+
+### `auxiliary_heat_running`
+
+The auxiliary heat is running.
+
+---
+
+### `subscription_required`
+
+Subscription required to connect.
+
+---
+
+### `invalid_credentials`
+
+Credentials provided were invalid.
+
+---
+
+### `bridge_disconnected`
+
+Indicates that the Seam API cannot communicate with [Seam Bridge](../../capability-guides/seam-bridge.md), for example, if 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).
+
+---
+
+## Warnings
+
+### `partial_backup_access_code_pool`
+
+Backup access code unhealthy.
+
+---
+
+### `many_active_backup_codes`
+
+Too many backup codes.
+
+---
+
+### `wyze_device_missing_gateway`
+
+Wyze Lock is not connected to a gateway.
+
+---
+
+### `functional_offline_device`
+
+Device is offline, but has some functionality available.
+
+---
+
+### `third_party_integration_detected`
+
+Third-party integration detected.
+
+---
+
+### `nest_thermostat_in_manual_eco_mode`
+
+Nest thermostat in manual eco mode.
+
+---
+
+### `ttlock_lock_gateway_unlocking_not_enabled`
+
+Remote Unlock feature not enabled in settings.
+
+---
+
+### `ttlock_weak_gateway_signal`
+
+Gateway signal is weak.
+
+---
+
+### `temperature_threshold_exceeded`
+
+Temperature threshold exceeded.
+
+---
+
+### `device_communication_degraded`
+
+Device appears to be unresponsive.
+
+---
+
+### `scheduled_maintenance_window`
+
+Scheduled maintenance window detected.
+
+---
+
+### `device_has_flaky_connection`
+
+Device has flaky connection.
+
+---
+
+### `salto_ks_office_mode`
+
+Lock is in Office Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_privacy_mode`
+
+Lock is in Privacy Mode. Access Codes will not unlock doors.
+
+---
+
+### `salto_ks_subscription_limit_almost_reached`
+
+Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Please increase your subscription limit, or delete some users from your site to rectify this.
+
+---
+
+### `unknown_issue_with_phone`
+
+An unknown issue occurred while syncing the state of this phone with the provider. This issue may affect the proper functioning of this phone.
+
+---
+
+### `lockly_time_zone_not_configured`
+
+We detected that this device does not have a time zone configured. Time bound codes may not work as expected.
+
+---
+
+## Endpoints
+
+
+---
+
+## Events
+
+### `device.connected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`. Note that some devices operate entirely in offline mode, so Seam never emits a `device.connected` event for these devices.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.added`
+
+A [device](../../core-concepts/devices/README.md) was added to Seam or was re-added to Seam after having been removed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.added`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.converted_to_unmanaged`
+
+A managed device was successfully converted to an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.converted_to_unmanaged`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.converted_to_managed`
+
+An [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) was successfully converted to a managed device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.converted_to_managed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.connected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from offline to online. That is, the `device.properties.online` property changed from `false` to `true`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.disconnected`
+
+The status of a [device](../../core-concepts/devices/README.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.unmanaged.disconnected`
+
+The status of an [unmanaged device](../../core-concepts/devices/managed-and-unmanaged-devices.md) changed from online to offline. That is, the `device.properties.online` property changed from `true` to `false`.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+error_code Format: Enum
+
+Error code associated with the disconnection event, if any.
+
+Possible enum values:
+- `account_disconnected`
+- `hub_disconnected`
+- `device_disconnected`
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.unmanaged.disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.tampered`
+
+A [device](../../core-concepts/devices/README.md) detected that it was tampered with, for example, opened or moved.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.tampered`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.low_battery`
+
+A [device](../../core-concepts/devices/README.md) battery level dropped below the low threshold.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.low_battery`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.battery_status_changed`
+
+A [device](../../core-concepts/devices/README.md) battery status changed since the last `battery_status_changed` event.
+
+
+
+battery_level Format: Number
+
+Number in the range 0 to 1.0 indicating the amount of battery in the device, as reported by the device.
+
+
+
+battery_status Format: Enum
+
+Battery status of the device, calculated from the numeric `battery_level` value.
+
+Possible enum values:
+- `critical`
+- `low`
+- `good`
+- `full`
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.battery_status_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.removed`
+
+A [device](../../core-concepts/devices/README.md) was removed externally from the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.removed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.deleted`
+
+A [device](../../core-concepts/devices/README.md) was deleted.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.deleted`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is using a third-party integration that will interfere with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.third_party_integration_no_longer_detected`
+
+Seam detected that a [device](../../core-concepts/devices/README.md) is no longer using a third-party integration that was interfering with Seam device management.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.third_party_integration_no_longer_detected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_activated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) activated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_activated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.salto.privacy_mode_deactivated`
+
+A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) deactivated privacy mode.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.salto.privacy_mode_deactivated`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_became_flaky`
+
+Seam detected a flaky [device](../../core-concepts/devices/README.md) connection.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_became_flaky`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.connection_stabilized`
+
+Seam detected that a previously-flaky [device](../../core-concepts/devices/README.md) connection stabilized.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.connection_stabilized`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required`
+
+A third-party subscription is required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.error.subscription_required.resolved`
+
+A third-party subscription is active or no longer required to use all [device](../../core-concepts/devices/README.md) features.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.error.subscription_required.resolved`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_connected`
+
+An accessory keypad was connected to a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_connected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.accessory_keypad_disconnected`
+
+An accessory keypad was disconnected from a [device](../../core-concepts/devices/README.md).
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.accessory_keypad_disconnected`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
+### `device.name_changed`
+
+The name of a [device](../../core-concepts/devices/README.md) was changed.
+
+
+
+connected_account_id Format: UUID
+
+ID of the [connected account](../../core-concepts/connected-accounts/README.md).
+
+
+
+created_at Format: Datetime
+
+Date and time at which the event was created.
+
+
+
+device_id Format: UUID
+
+ID of the device.
+
+
+
+device_name Format: String
+
+The new name of the device.
+
+
+
+event_id Format: UUID
+
+ID of the event.
+
+
+
+event_type Format: Enum
+
+Value: `device.name_changed`
+
+
+
+occurred_at Format: Datetime
+
+Date and time at which the event occurred.
+
+
+
+workspace_id Format: UUID
+
+ID of the [workspace](../../core-concepts/workspaces/README.md).
+
+---
+
diff --git a/docs/api/noise_sensors/noise_thresholds/README.md b/docs/api/noise_sensors/noise_thresholds/README.md
new file mode 100644
index 000000000..2d006b4d1
--- /dev/null
+++ b/docs/api/noise_sensors/noise_thresholds/README.md
@@ -0,0 +1,48 @@
+# Noise Thresholds
+
+## `noise_threshold`
+
+### `device_id`
+
+Format: `UUID`
+
+---
+
+### `ends_daily_at`
+
+Format: `String`
+
+---
+
+### `name`
+
+Format: `String`
+
+---
+
+### `noise_threshold_decibels`
+
+Format: `Number`
+
+---
+
+### `noise_threshold_id`
+
+Format: `UUID`
+
+---
+
+### `noise_threshold_nrs`
+
+Format: `Number`
+
+---
+
+### `starts_daily_at`
+
+Format: `String`
+
+---
+
+## Endpoints
+
diff --git a/docs/api/noise_sensors/simulate/README.md b/docs/api/noise_sensors/simulate/README.md
new file mode 100644
index 000000000..573e48efe
--- /dev/null
+++ b/docs/api/noise_sensors/simulate/README.md
@@ -0,0 +1,4 @@
+# Noise Sensor Simulations
+
+## Endpoints
+
diff --git a/docs/api/webhooks/README.md b/docs/api/webhooks/README.md
new file mode 100644
index 000000000..463a22f68
--- /dev/null
+++ b/docs/api/webhooks/README.md
@@ -0,0 +1,32 @@
+# Webhooks
+
+## `webhook`
+
+### `event_types`
+
+Format: `List`
+
+Item format: `String`
+
+---
+
+### `secret`
+
+Format: `String`
+
+---
+
+### `url`
+
+Format: `String`
+
+---
+
+### `webhook_id`
+
+Format: `String`
+
+---
+
+## Endpoints
+
diff --git a/docs/api/workspaces/README.md b/docs/api/workspaces/README.md
new file mode 100644
index 000000000..a4ac545c8
--- /dev/null
+++ b/docs/api/workspaces/README.md
@@ -0,0 +1,83 @@
+# Workspaces
+
+## `workspace`
+
+### `company_name`
+
+Format: `String`
+
+---
+
+### `connect_partner_name`
+
+{% hint style="warning" %}
+**Deprecated**. use company_name
+{% endhint %}
+
+Format: `String`
+
+---
+
+### `connect_webview_customization`
+
+Format: `Object`
+
+
+
+inviter_logo_url Format: String
+
+
+
+
+logo_shape Format: Enum
+
+Possible enum values:
+- `circle`
+- `square`
+
+
+
+
+primary_button_color Format: String
+
+
+
+
+primary_button_text_color Format: String
+
+
+
+
+success_message Format: String
+
+
+---
+
+### `is_sandbox`
+
+Format: `Boolean`
+
+---
+
+### `is_suspended`
+
+Format: `Boolean`
+
+True if a sandbox workspace has not been accessed in 14 days
+
+---
+
+### `name`
+
+Format: `String`
+
+---
+
+### `workspace_id`
+
+Format: `UUID`
+
+---
+
+## Endpoints
+
diff --git a/src/data/paths.yaml b/src/data/paths.yaml
index 4b9238aaa..03d17c40c 100644
--- a/src/data/paths.yaml
+++ b/src/data/paths.yaml
@@ -80,3 +80,85 @@
title: Enrollment Automations
resources:
- enrollment_automation
+
+/access_codes:
+ title: Access Codes
+ resources:
+ - access_code
+
+/access_codes/simulate:
+ title: Access Code Simulations
+ resources:
+ - unmanaged_access_code
+
+/access_codes/unmanaged:
+ title: Unmanaged Access Codes
+ resources:
+ - unmanaged_access_code
+
+/client_sessions:
+ title: Client Sessions
+ resources:
+ - client_session
+
+/connect_webviews:
+ title: Connect Webviews
+ resources:
+ - connect_webview
+
+/connected_accounts:
+ title: Connected Accounts
+ resources:
+ - connected_account
+
+/devices:
+ title: Devices
+ resources:
+ - device
+
+/devices/simulate:
+ title: Device Simulations
+ resources:
+ - unmanaged_device
+
+/events:
+ title: Events
+ resources:
+ - event
+
+/locks:
+ title: Locks
+ resources:
+ - device
+
+/networks:
+ title: Networks
+ resources:
+ - network
+
+/noise_sensors:
+ title: Noise Sensors
+ resources:
+ - device
+
+/noise_sensors/noise_thresholds:
+ title: Noise Thresholds
+ resources:
+ - noise_threshold
+
+/noise_sensors/simulate:
+ title: Noise Sensor Simulations
+ resources: []
+
+/webhooks:
+ title: Webhooks
+ resources:
+ - webhook
+
+/workspaces:
+ title: Workspaces
+ resources:
+ - workspace
+# Missing documented paths:
+# '/bridges' - 'bridge' resource not defined in openapi global component schemas
+# '/action_attempts' - defined separately in Blueprint, need to figure out how to adopt it
diff --git a/src/lib/reference.ts b/src/lib/reference.ts
index adae39a57..0f58f7ba0 100644
--- a/src/lib/reference.ts
+++ b/src/lib/reference.ts
@@ -53,15 +53,6 @@ export const reference = (
}
for (const route of blueprint.routes ?? []) {
- if (
- !route.path.startsWith('/acs') &&
- !route.path.startsWith('/thermostats') &&
- !route.path.startsWith('/phones') &&
- !route.path.startsWith('/user_identities')
- ) {
- continue
- }
-
if (route.isUndocumented) continue
if (pathMetadata[route.path]?.title == null) continue