diff --git a/docs/api/_report.md b/docs/api/_report.md
index 327adc94..752e7ea7 100644
--- a/docs/api/_report.md
+++ b/docs/api/_report.md
@@ -4,9 +4,6 @@
### Routes
-- `/access_codes`
-- `/access_codes/simulate`
-- `/access_codes/unmanaged`
- `/action_attempts`
- `/bridges`
- `/client_sessions`
diff --git a/docs/api/access_codes/README.md b/docs/api/access_codes/README.md
new file mode 100644
index 00000000..3772dc07
--- /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 00000000..6cf7bed1
--- /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 00000000..2641bc0e
--- /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 00000000..b6a92636
--- /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 00000000..468d3f04
--- /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 00000000..23490717
--- /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 00000000..6e20941b
--- /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 00000000..738d1e42
--- /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 00000000..fd708e5a
--- /dev/null
+++ b/docs/api/access_codes/simulate/README.md
@@ -0,0 +1,7 @@
+# Access Code Simulations
+
+## 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 00000000..3f9e8a60
--- /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 00000000..bc4527ce
--- /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 00000000..9f6e03e5
--- /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 00000000..fc8a38cc
--- /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 00000000..d87762e7
--- /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 00000000..360dbbc6
--- /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 00000000..97b02a65
--- /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 00000000..bc0eeb82
--- /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 00000000..341bbd4a
--- /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/src/data/paths.yaml b/src/data/paths.yaml
index 4b9238aa..075c0223 100644
--- a/src/data/paths.yaml
+++ b/src/data/paths.yaml
@@ -80,3 +80,17 @@
title: Enrollment Automations
resources:
- enrollment_automation
+
+/access_codes:
+ title: Access Codes
+ resources:
+ - access_code
+
+/access_codes/simulate:
+ title: Access Code Simulations
+ resources: []
+
+/access_codes/unmanaged:
+ title: Unmanaged Access Codes
+ resources:
+ - unmanaged_access_code
diff --git a/src/lib/reference.ts b/src/lib/reference.ts
index adae39a5..dcb64533 100644
--- a/src/lib/reference.ts
+++ b/src/lib/reference.ts
@@ -57,7 +57,8 @@ export const reference = (
!route.path.startsWith('/acs') &&
!route.path.startsWith('/thermostats') &&
!route.path.startsWith('/phones') &&
- !route.path.startsWith('/user_identities')
+ !route.path.startsWith('/user_identities') &&
+ !route.path.startsWith('/access_codes')
) {
continue
}