diff --git a/package-lock.json b/package-lock.json index 6bdb8e20..47bea7fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@seamapi/blueprint": "^1.10.0", "@seamapi/fake-seam-connect": "^2.0.4", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1100.0", + "@seamapi/types": "1.1112.0", "@types/jsonwebtoken": "^9.0.6", "@types/node": "^24.10.9", "ava": "^8.0.1", @@ -1133,9 +1133,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.1100.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1100.0.tgz", - "integrity": "sha512-syQWT7HOR5T24hzSAXpcFvWzRUrn+PuObNhiN2xvfxGJUseUvhB0LQGfI7mJY0lxWdBazYJEXLf8M3cqYW7K8g==", + "version": "1.1112.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1112.0.tgz", + "integrity": "sha512-+hUxlBQNp6EggFS0uAfPWs+ET2D+f//f0R9qvZ6X1jnsLqpRi+TUicZBRCJ1O7ykaH3C95xKjjjY+/Q9NmWwsg==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 8f435caf..5e8d02e0 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@seamapi/blueprint": "^1.10.0", "@seamapi/fake-seam-connect": "^2.0.4", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1100.0", + "@seamapi/types": "1.1112.0", "@types/jsonwebtoken": "^9.0.6", "@types/node": "^24.10.9", "ava": "^8.0.1", diff --git a/src/lib/resources/access-grant.ts b/src/lib/resources/access-grant.ts index 24e6c504..86779e77 100644 --- a/src/lib/resources/access-grant.ts +++ b/src/lib/resources/access-grant.ts @@ -321,9 +321,9 @@ export type AccessGrant = { device_id: string /** - * Reason the access code could not be revoked (e.g. `offline_access_code_not_revocable`). + * Reason the access code could not be revoked. */ - error_code: string + error_code: 'offline_access_code_not_revocable' /** * Human-readable description of why revocation failed. diff --git a/src/lib/resources/access-method.ts b/src/lib/resources/access-method.ts index 97ec6476..14476af0 100644 --- a/src/lib/resources/access-method.ts +++ b/src/lib/resources/access-method.ts @@ -104,7 +104,7 @@ export type AccessMethod = { */ is_ready_for_assignment?: boolean | undefined /** - * Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. + * Indicates whether the access method is ready to be encoded. This is true when the card has not yet been issued and the access system has received all the access the card needs. While it is false, `pending_mutations` contains `waiting_for_access_on_acs_system`. */ is_ready_for_encoding?: boolean | undefined /** @@ -242,6 +242,24 @@ export type AccessMethod = { */ starts_at: string | null } + } /** + * The access system has not yet received all the access this card needs. A card encoded now would carry only the access the system already has, so wait until this clears before encoding. + */ + | { + /** + * Date and time at which the mutation was created. + */ + created_at: string + + /** + * Detailed description of the mutation. + */ + message: string + + /** + * Mutation code to indicate that the access system has not yet received all the access this card needs, so the card is not ready to be encoded. + */ + mutation_code: 'waiting_for_access_on_acs_system' } > diff --git a/src/lib/resources/acs-entrance.ts b/src/lib/resources/acs-entrance.ts index c4dc4977..eb583fc7 100644 --- a/src/lib/resources/acs-entrance.ts +++ b/src/lib/resources/acs-entrance.ts @@ -195,22 +195,27 @@ export type AcsEntrance = { /** * Errors associated with the [entrance](https://www.seam.co/docs/low-level-apis/access-systems/retrieving-entrance-details). */ - errors: Array<{ + errors: Array< /** - * Date and time at which Seam created the error. + * Indicates that the [entrance](https://www.seam.co/docs/low-level-apis/access-systems/retrieving-entrance-details) was removed from the connected account, so Seam can no longer sync it. */ - created_at: string + { + /** + * Date and time at which Seam created the error. + */ + created_at: string - /** - * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. - */ - error_code: string + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'entrance_removed' - /** - * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. - */ - message: string - }> + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } + > /** * Hotek-specific metadata associated with the [entrance](https://www.seam.co/docs/low-level-apis/access-systems/retrieving-entrance-details). diff --git a/src/lib/resources/acs-system.ts b/src/lib/resources/acs-system.ts index ef0c2c45..01063497 100644 --- a/src/lib/resources/acs-system.ts +++ b/src/lib/resources/acs-system.ts @@ -125,6 +125,24 @@ export type AcsSystem = { */ error_code: 'salto_ks_subscription_limit_exceeded' + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the access control system has reached the maximum number of users its license allows, so Seam cannot create new users on it and access for new guests is not provisioned. Remove unused users from the access control system or increase its license. The error clears once Seam can create users again. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'user_license_limit_reached' + /** * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. */ diff --git a/src/lib/resources/action-attempt.ts b/src/lib/resources/action-attempt.ts index fe1a08ef..e9817913 100644 --- a/src/lib/resources/action-attempt.ts +++ b/src/lib/resources/action-attempt.ts @@ -1335,7 +1335,7 @@ export type ActionAttempt = */ is_ready_for_assignment?: boolean | undefined /** - * Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. + * Indicates whether the access method is ready to be encoded. This is true when the card has not yet been issued and the access system has received all the access the card needs. While it is false, `pending_mutations` contains `waiting_for_access_on_acs_system`. */ is_ready_for_encoding?: boolean | undefined /** @@ -1359,41 +1359,47 @@ export type ActionAttempt = /** * Previous access time configuration. */ - from: { - /** - * Previous end time for access. - */ - ends_at: string | null - /** - * Previous start time for access. - */ - starts_at: string | null - } - + from?: + | { + /** + * Previous end time for access. + */ + ends_at: string | null + /** + * Previous start time for access. + */ + starts_at: string | null + } + | undefined /** * Detailed description of the mutation. */ message: string /** - * Mutation code to indicate that Seam is in the process of updating the access times for this access method. + * Mutation code to indicate that the access system has not yet received all the access this card needs, so the card is not ready to be encoded. */ mutation_code: - 'provisioning_access' | 'revoking_access' | 'updating_access_times' + | 'provisioning_access' + | 'revoking_access' + | 'updating_access_times' + | 'waiting_for_access_on_acs_system' /** * New access time configuration. */ - to: { - /** - * New end time for access. - */ - ends_at: string | null - /** - * New start time for access. - */ - starts_at: string | null - } + to?: + | { + /** + * New end time for access. + */ + ends_at: string | null + /** + * New start time for access. + */ + starts_at: string | null + } + | undefined }> /** @@ -2263,6 +2269,401 @@ export type ActionAttempt = */ action_attempt_id: string + /** + * Action attempt to track the status of setting the volume on a speaker. + */ + action_type: 'SET_SPEAKER_VOLUME' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: {} + + status: 'success' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of setting the volume on a speaker. + */ + action_type: 'SET_SPEAKER_VOLUME' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: null + + status: 'pending' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of setting the volume on a speaker. + */ + action_type: 'SET_SPEAKER_VOLUME' + + /** + * Error associated with the action. + */ + error: { + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Type of the error. + */ + type: string + } + + /** + * Result of the action. + */ + result: null + + status: 'error' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of muting or unmuting a speaker. + */ + action_type: 'SET_SPEAKER_MUTE' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: {} + + status: 'success' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of muting or unmuting a speaker. + */ + action_type: 'SET_SPEAKER_MUTE' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: null + + status: 'pending' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of muting or unmuting a speaker. + */ + action_type: 'SET_SPEAKER_MUTE' + + /** + * Error associated with the action. + */ + error: { + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Type of the error. + */ + type: string + } + + /** + * Result of the action. + */ + result: null + + status: 'error' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of pausing playback on a speaker. + */ + action_type: 'PAUSE_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: { + /** + * IDs of the speakers whose playback was paused, including speakers grouped with the requested speaker. + */ + affected_device_ids: Array + } + + status: 'success' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of pausing playback on a speaker. + */ + action_type: 'PAUSE_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: null + + status: 'pending' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of pausing playback on a speaker. + */ + action_type: 'PAUSE_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: { + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Type of the error. + */ + type: string + } + + /** + * Result of the action. + */ + result: null + + status: 'error' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of resuming playback on a speaker. + */ + action_type: 'RESUME_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: { + /** + * IDs of the speakers whose playback was resumed, including speakers grouped with the requested speaker. + */ + affected_device_ids: Array + } + + status: 'success' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of resuming playback on a speaker. + */ + action_type: 'RESUME_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: null + + status: 'pending' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of resuming playback on a speaker. + */ + action_type: 'RESUME_SPEAKER_PLAYBACK' + + /** + * Error associated with the action. + */ + error: { + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Type of the error. + */ + type: string + } + + /** + * Result of the action. + */ + result: null + + status: 'error' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of playing a chime on a speaker. + */ + action_type: 'PLAY_SPEAKER_CHIME' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: {} + + status: 'success' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of playing a chime on a speaker. + */ + action_type: 'PLAY_SPEAKER_CHIME' + + /** + * Error associated with the action. + */ + error: null + /** + * Result of the action. + */ + result: null + + status: 'pending' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + + /** + * Action attempt to track the status of playing a chime on a speaker. + */ + action_type: 'PLAY_SPEAKER_CHIME' + + /** + * Error associated with the action. + */ + error: { + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Type of the error. + */ + type: string + } + + /** + * Result of the action. + */ + result: null + + status: 'error' + } + | { + /** + * ID of the action attempt. + */ + action_attempt_id: string + /** * Syncing access codes is pending. */ diff --git a/src/lib/resources/connect-webview.ts b/src/lib/resources/connect-webview.ts index 1d97aa4f..d533f90c 100644 --- a/src/lib/resources/connect-webview.ts +++ b/src/lib/resources/connect-webview.ts @@ -21,7 +21,12 @@ export type ConnectWebview = { * High-level device capabilities that the Connect Webview can accept. When creating a Connect Webview, you can specify the types of devices that it can connect to Seam. If you do not set custom `accepted_capabilities`, Seam uses a default set of `accepted_capabilities` for each provider. For example, if you create a Connect Webview that accepts SmartThing devices, without specifying `accepted_capabilities`, Seam accepts only SmartThings locks. To connect SmartThings thermostats and locks to Seam, create a Connect Webview and include both `thermostat` and `lock` in the `accepted_capabilities`. */ accepted_capabilities: Array< - 'lock' | 'thermostat' | 'noise_sensor' | 'access_control' | 'camera' + | 'lock' + | 'thermostat' + | 'noise_sensor' + | 'access_control' + | 'camera' + | 'speaker' > /** diff --git a/src/lib/resources/connected-account.ts b/src/lib/resources/connected-account.ts index 231be273..4390dae7 100644 --- a/src/lib/resources/connected-account.ts +++ b/src/lib/resources/connected-account.ts @@ -11,7 +11,12 @@ export type ConnectedAccount = { * List of capabilities that were accepted during the account connection process. */ accepted_capabilities: Array< - 'lock' | 'thermostat' | 'noise_sensor' | 'access_control' | 'camera' + | 'lock' + | 'thermostat' + | 'noise_sensor' + | 'access_control' + | 'camera' + | 'speaker' > /** diff --git a/src/lib/resources/device-provider.ts b/src/lib/resources/device-provider.ts index 46e4ea1e..0a1bbf7b 100644 --- a/src/lib/resources/device-provider.ts +++ b/src/lib/resources/device-provider.ts @@ -24,6 +24,18 @@ export type DeviceProvider = { * Indicates whether the thermostat supports simultaneous heating and cooling. */ can_hvac_heat_cool?: boolean | undefined + /** + * Indicates whether the speaker supports muting and unmuting. + */ + can_mute_speaker?: boolean | undefined + /** + * Indicates whether the speaker supports pausing and resuming playback. + */ + can_pause_speaker_playback?: boolean | undefined + /** + * Indicates whether the speaker supports playing a chime. + */ + can_play_speaker_chime?: boolean | undefined /** * Indicates whether the device supports programming offline access codes. */ @@ -56,6 +68,10 @@ export type DeviceProvider = { * Indicates whether the thermostat supports running climate programs. */ can_run_thermostat_programs?: boolean | undefined + /** + * Indicates whether the speaker supports setting its volume. + */ + can_set_speaker_volume?: boolean | undefined /** * Indicates whether the device supports simulating connection in a sandbox. */ @@ -164,6 +180,7 @@ export type DeviceProvider = { | 'omnitec' | 'kisi' | 'aqara' + | 'sonos' /** * Display name for the device provider. diff --git a/src/lib/resources/device.ts b/src/lib/resources/device.ts index e0c31944..118d90cc 100644 --- a/src/lib/resources/device.ts +++ b/src/lib/resources/device.ts @@ -27,6 +27,18 @@ export type Device = { * Indicates whether the thermostat supports simultaneous heating and cooling. */ can_hvac_heat_cool?: boolean | undefined + /** + * Indicates whether the speaker supports muting and unmuting. + */ + can_mute_speaker?: boolean | undefined + /** + * Indicates whether the speaker supports pausing and resuming playback. + */ + can_pause_speaker_playback?: boolean | undefined + /** + * Indicates whether the speaker supports playing a chime. + */ + can_play_speaker_chime?: boolean | undefined /** * Indicates whether the device supports programming offline access codes. */ @@ -59,6 +71,10 @@ export type Device = { * Indicates whether the thermostat supports running climate programs. */ can_run_thermostat_programs?: boolean | undefined + /** + * Indicates whether the speaker supports setting its volume. + */ + can_set_speaker_volume?: boolean | undefined /** * Indicates whether the device supports simulating connection in a sandbox. */ @@ -222,6 +238,7 @@ export type Device = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' /** * Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. @@ -1833,6 +1850,41 @@ export type Device = { model?: string | undefined } | undefined + /** + * Metadata for a Sonos speaker. + */ + sonos_metadata?: + | { + /** + * Models of the speakers bonded to this speaker, such as surrounds or a subwoofer. + */ + bonded_member_models?: Array | undefined + /** + * Color of the speaker, as reported by Sonos. + */ + color?: string | undefined + /** + * ID of the Sonos household that the speaker belongs to. + */ + household_id?: string | undefined + /** + * Model name of the speaker, as reported by Sonos. + */ + model_display_name?: string | undefined + /** + * ID of the Sonos player for the speaker. + */ + player_id?: string | undefined + /** + * Name of the speaker, as set in the Sonos app. + */ + player_name?: string | undefined + /** + * Software version running on the speaker. + */ + software_version?: string | undefined + } + | undefined /** * Metadata for a tado° device. */ @@ -2274,6 +2326,81 @@ export type Device = { time_zone?: string | undefined }> | undefined + /** + * Audio state and capabilities of the speaker. + */ + speaker?: + | { + /** + * IDs of the other speakers that are currently grouped with this speaker. Pausing or resuming playback on a speaker also affects the speakers in its group. + */ + grouped_with_device_ids: Array + + /** + * Indicates whether the speaker's volume is fixed, for example, because the speaker's line-out level is controlled by an external amplifier. A speaker with a fixed volume cannot have its volume set through Seam. + */ + has_fixed_volume: boolean + + /** + * Indicates whether the speaker is muted. + */ + is_muted: boolean + + /** + * Maximum volume that you can set on the speaker. This is the ceiling of the speaker's native volume scale, not a limit configured for guests. + */ + max_volume: number + + /** + * Minimum volume that you can set on the speaker. + */ + min_volume: number + + /** + * Content that is currently playing on the speaker. + */ + now_playing?: + | { + /** + * Album of the content that is currently playing. + */ + album?: string | undefined + /** + * Artist of the content that is currently playing. + */ + artist?: string | undefined + /** + * Title of the content that is currently playing. + */ + title?: string | undefined + } + | undefined + /** + * Playback state of the speaker. + */ + playback_state: + 'playing' | 'paused' | 'idle' | 'buffering' | 'unknown' + + /** + * Indicates whether the speaker can play a chime. + */ + supports_chime: boolean + + /** + * Current volume of the speaker, on the speaker's native volume scale from `min_volume` to `max_volume`. This is the native volume setting, not a decibel level. + */ + volume: number + + /** + * Date and time at which the speaker first reported its current volume. + */ + volume_reported_at?: string | undefined + /** + * Increment between the volume values that you can set on the speaker. + */ + volume_step: number + } + | undefined /** * Supported code lengths for access codes. */ diff --git a/src/lib/resources/phone.ts b/src/lib/resources/phone.ts index 0ca12ec8..141a72dd 100644 --- a/src/lib/resources/phone.ts +++ b/src/lib/resources/phone.ts @@ -33,24 +33,356 @@ export type Phone = { display_name: string /** - * Errors associated with the phone. + * Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. */ - errors: Array<{ + errors: Array< /** - * Date and time at which Seam created the error. + * Indicates that the account is disconnected. */ - created_at: string + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string - /** - * Unique identifier of the type of error. + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'account_disconnected' + + /** + * Indicates that the error is a [connected account](https://www.seam.co/docs/api/connected_accounts/object) error. + */ + is_connected_account_error: true + + /** + * Indicates that the error is not a device error. + */ + is_device_error: false + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the Salto site user limit has been reached. */ - error_code: string + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string - /** - * Detailed description of the error. + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'salto_ks_subscription_limit_exceeded' + + /** + * Indicates that the error is a [connected account](https://www.seam.co/docs/api/connected_accounts/object) error. + */ + is_connected_account_error: true + + /** + * Indicates that the error is not a device error. + */ + is_device_error: false + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the provider's system to which this device belongs is not letting Seam act on it, so Seam cannot manage access codes or unlock the device. The error message says which of three causes applies. Seam's integration user may not have sufficient permissions on the provider's system, or may have been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. The provider account or site may not have a valid subscription with the provider: set up or renew that subscription with the provider. Or the provider may have rejected the credential Seam uses to operate the device's hub: contact Seam support to re-activate it. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'insufficient_permissions' + + /** + * Indicates that the error is a [connected account](https://www.seam.co/docs/api/connected_accounts/object) error. + */ + is_connected_account_error: true + + /** + * Indicates that the error is not a device error. + */ + is_device_error: false + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that one or more dormakaba sites associated with the connected account could not be connected. Contact dormakaba support. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'dormakaba_sites_disconnected' + + /** + * Indicates that the error is a [connected account](https://www.seam.co/docs/api/connected_accounts/object) error. + */ + is_connected_account_error: true + + /** + * Indicates that the error is not a device error. + */ + is_device_error: false + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the device is offline. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'device_offline' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the device has been removed. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'device_removed' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the hub is disconnected. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'hub_disconnected' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the device is disconnected. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'device_disconnected' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the [backup access code pool](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes/backup-access-codes) is empty. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'empty_backup_access_code_pool' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the user is not authorized to use the August lock. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'august_lock_not_authorized' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that device credentials are missing. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'missing_device_credentials' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the auxiliary heat is running. */ - message: string - }> + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'auxiliary_heat_running' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that a subscription is required to connect. + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'subscription_required' + + /** + * Indicates that the error is a device error. + */ + is_device_error: true + + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } /** + * Indicates that the Seam API cannot communicate with [Seam Bridge](https://www.seam.co/docs/capability-guides/seam-bridge), for example, if the Seam Bridge executable has stopped or if the computer running the Seam Bridge executable is offline. See also [Troubleshooting Your Access Control System](https://www.seam.co/docs/low-level-apis/access-systems/troubleshooting-your-access-control-system#acs_system-errors-seam_bridge_disconnected). + */ + | { + /** + * Date and time at which Seam created the error. + */ + created_at: string + + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + */ + error_code: 'bridge_disconnected' + + /** + * Indicates whether the error is related to [Seam Bridge](https://www.seam.co/docs/capability-guides/seam-bridge). + */ + is_bridge_error?: boolean | undefined + /** + * Indicates whether the error is related specifically to the connected account. + */ + is_connected_account_error?: boolean | undefined + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + message: string + } + > /** * Optional nickname to describe the phone, settable through Seam. @@ -100,24 +432,525 @@ export type Phone = { } /** - * Warnings associated with the phone. + * Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. */ - warnings: Array<{ + warnings: Array< /** - * Date and time at which Seam created the warning. + * Indicates that the backup access code is unhealthy. */ - created_at: string + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string - /** - * Detailed description of the warning. + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'partial_backup_access_code_pool' + } /** + * Indicates that there are too many backup codes. */ - message: string + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string - /** - * Unique identifier of the type of warning. + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'many_active_backup_codes' + } /** + * Indicates that a third-party integration has been detected. */ - warning_code: string - }> + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'third_party_integration_detected' + } /** + * Indicates that the Remote Unlock feature is not enabled in the settings." + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'ttlock_lock_gateway_unlocking_not_enabled' + } /** + * Indicates that the gateway signal is weak. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'ttlock_weak_gateway_signal' + } /** + * Indicates that the device is in power saving mode and may have limited functionality. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'power_saving_mode' + } /** + * Indicates that the temperature threshold has been exceeded. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'temperature_threshold_exceeded' + } /** + * Indicates that the device appears to be unresponsive. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'device_communication_degraded' + } /** + * Indicates that a scheduled maintenance window has been detected. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'scheduled_maintenance_window' + } /** + * Indicates that the device has a flaky connection. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'device_has_flaky_connection' + } /** + * Indicates that the Salto KS lock is in Office Mode. Access Codes will not unlock doors. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'salto_ks_office_mode' + } /** + * Indicates that the Salto KS lock is in Privacy Mode. Access Codes will not unlock doors. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'salto_ks_privacy_mode' + } /** + * Indicates that the lock is in Privacy Mode. Access codes and remote unlock are blocked until Privacy Mode is disabled. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'privacy_mode' + } /** + * Indicates that the Salto KS site has exceeded 80% of the maximum number of allowed users. Increase your subscription limit or delete some users from your site. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'salto_ks_subscription_limit_almost_reached' + } /** + * Indicates that a change in the reported device model has been detected for this Salto KS lock, which may occur after an IQ hub reset. Access code support may be affected. See https://help.getseam.com/articles/5098842588-salto-ks-lock-loses-access-code-support for troubleshooting steps. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'salto_ks_lock_access_code_support_removed' + } /** + * Indicates that an unknown issue occurred while syncing the state of the phone with the provider. This issue may affect the proper functioning of the phone. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'unknown_issue_with_phone' + } /** + * Indicates that Seam detected that the Lockly device does not have a time zone configured. Time-bound codes may not work as expected. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'lockly_time_zone_not_configured' + } /** + * Indicates that Seam does not know the time zone of the Ultraloq device. Set a time zone to enable time-bound access codes. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'ultraloq_time_zone_unknown' + } /** + * Indicates that Seam does not know the device's time zone. Set a time zone to enable time-bound access codes. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'time_zone_unknown' + } /** + * Indicates that the device's configured time zone does not match its hardware UTC offset. Time-bound access codes may activate at the wrong local time. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'time_zone_mismatch' + } /** + * Indicates that the 2N device does not have a time zone configured. Configure a time zone on the device to enable access codes. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'two_n_device_missing_timezone' + } /** + * Indicates that a hub or relay must be connected to unlock additional capabilities such as remote unlock. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'hub_required_for_additional_capabilities' + } /** + * Indicates a provider-specific issue that may affect device functionality. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'provider_issue' + } /** + * Indicates that the key is in a locker that does not support the access codes API. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'keynest_unsupported_locker' + } /** + * Indicates that the accessory keypad exists, but is not linked to the Igloohome Bridge. Online access code programming will fail until the keypad is linked to the Igloohome Bridge in the Igloohome app. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'accessory_keypad_setup_required' + } /** + * Indicates that the accessory keypad paired with this lock has a low or critically low battery. Replace its batteries so guests can keep entering their access codes. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'accessory_keypad_low_battery' + } /** + * Indicates that the device may optimistically be reported as online because the provider does not reliably report its online status. + */ + | { + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'unreliable_online_status' + } /** + * Indicates that the device has reached its maximum number of active access codes. Delete existing codes before creating new ones. + */ + | { + /** + * Number of active access codes on the device when the warning was set. + */ + active_access_code_count: number + + /** + * Date and time at which Seam created the warning. + */ + created_at: string + + /** + * Maximum number of active access codes supported by the device. + */ + max_active_access_code_count: number + + /** + * Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + */ + message: string + + /** + * Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + */ + warning_code: 'max_access_codes_reached' + } + > /** * ID of the workspace that contains the phone. diff --git a/src/lib/resources/unmanaged-access-grant.ts b/src/lib/resources/unmanaged-access-grant.ts index 4549b40c..65602c62 100644 --- a/src/lib/resources/unmanaged-access-grant.ts +++ b/src/lib/resources/unmanaged-access-grant.ts @@ -299,9 +299,9 @@ export type UnmanagedAccessGrant = { device_id: string /** - * Reason the access code could not be revoked (e.g. `offline_access_code_not_revocable`). + * Reason the access code could not be revoked. */ - error_code: string + error_code: 'offline_access_code_not_revocable' /** * Human-readable description of why revocation failed. diff --git a/src/lib/resources/unmanaged-access-method.ts b/src/lib/resources/unmanaged-access-method.ts index 1f63945a..47db8d84 100644 --- a/src/lib/resources/unmanaged-access-method.ts +++ b/src/lib/resources/unmanaged-access-method.ts @@ -92,7 +92,7 @@ export type UnmanagedAccessMethod = { */ is_ready_for_assignment?: boolean | undefined /** - * Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. + * Indicates whether the access method is ready to be encoded. This is true when the card has not yet been issued and the access system has received all the access the card needs. While it is false, `pending_mutations` contains `waiting_for_access_on_acs_system`. */ is_ready_for_encoding?: boolean | undefined /** @@ -230,6 +230,24 @@ export type UnmanagedAccessMethod = { */ starts_at: string | null } + } /** + * The access system has not yet received all the access this card needs. A card encoded now would carry only the access the system already has, so wait until this clears before encoding. + */ + | { + /** + * Date and time at which the mutation was created. + */ + created_at: string + + /** + * Detailed description of the mutation. + */ + message: string + + /** + * Mutation code to indicate that the access system has not yet received all the access this card needs, so the card is not ready to be encoded. + */ + mutation_code: 'waiting_for_access_on_acs_system' } > diff --git a/src/lib/resources/unmanaged-device.ts b/src/lib/resources/unmanaged-device.ts index 32bbef5f..60cfd83f 100644 --- a/src/lib/resources/unmanaged-device.ts +++ b/src/lib/resources/unmanaged-device.ts @@ -27,6 +27,18 @@ export type UnmanagedDevice = { * Indicates whether the thermostat supports simultaneous heating and cooling. */ can_hvac_heat_cool?: boolean | undefined + /** + * Indicates whether the speaker supports muting and unmuting. + */ + can_mute_speaker?: boolean | undefined + /** + * Indicates whether the speaker supports pausing and resuming playback. + */ + can_pause_speaker_playback?: boolean | undefined + /** + * Indicates whether the speaker supports playing a chime. + */ + can_play_speaker_chime?: boolean | undefined /** * Indicates whether the device supports programming offline access codes. */ @@ -59,6 +71,10 @@ export type UnmanagedDevice = { * Indicates whether the thermostat supports running climate programs. */ can_run_thermostat_programs?: boolean | undefined + /** + * Indicates whether the speaker supports setting its volume. + */ + can_set_speaker_volume?: boolean | undefined /** * Indicates whether the device supports simulating connection in a sandbox. */ @@ -177,6 +193,7 @@ export type UnmanagedDevice = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' /** * Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. diff --git a/src/lib/routes/connect-webviews/connect-webviews.ts b/src/lib/routes/connect-webviews/connect-webviews.ts index 880c9a69..1e02d82b 100644 --- a/src/lib/routes/connect-webviews/connect-webviews.ts +++ b/src/lib/routes/connect-webviews/connect-webviews.ts @@ -259,7 +259,12 @@ export type ConnectWebviewsCreateParameters = { */ accepted_capabilities?: | Array< - 'lock' | 'thermostat' | 'noise_sensor' | 'access_control' | 'camera' + | 'lock' + | 'thermostat' + | 'noise_sensor' + | 'access_control' + | 'camera' + | 'speaker' > | undefined /** @@ -335,6 +340,7 @@ export type ConnectWebviewsCreateParameters = { | 'omnitec' | 'kisi' | 'aqara' + | 'sonos' | 'yale_access' | 'hid_cm' | 'google_nest' diff --git a/src/lib/routes/connected-accounts/connected-accounts.ts b/src/lib/routes/connected-accounts/connected-accounts.ts index e4d65fd3..01b78655 100644 --- a/src/lib/routes/connected-accounts/connected-accounts.ts +++ b/src/lib/routes/connected-accounts/connected-accounts.ts @@ -388,7 +388,12 @@ export type ConnectedAccountsUpdateParameters = { */ accepted_capabilities?: | Array< - 'lock' | 'thermostat' | 'noise_sensor' | 'access_control' | 'camera' + | 'lock' + | 'thermostat' + | 'noise_sensor' + | 'access_control' + | 'camera' + | 'speaker' > | undefined /** diff --git a/src/lib/routes/customers/customers.ts b/src/lib/routes/customers/customers.ts index 88da5a01..63cdadc9 100644 --- a/src/lib/routes/customers/customers.ts +++ b/src/lib/routes/customers/customers.ts @@ -184,6 +184,7 @@ export class SeamHttpCustomers { /** * Deletes customer data including resources like spaces, properties, rooms, users, etc. * This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + * Space keys also match spaces created directly with a `space_key` (for example, through `/spaces/create`). */ deleteData( parameters?: CustomersDeleteDataParameters, @@ -479,6 +480,10 @@ export type CustomersCreatePortalParameters = { name?: string | undefined }> | undefined + /** + * Battery level, from 0 to 1, at or below which `device.low_battery` events fire for this customer's devices. Overrides the workspace and device defaults. Pass `null` to remove the customer's override. + */ + low_battery_alert_threshold?: number | null | undefined /** * List of short-term rental properties. */ @@ -927,6 +932,10 @@ export type CustomersCreatePortalParameters = { * Indicates whether the customer can customize the Instant Key profile for their properties. */ allow_instant_key_customization?: boolean | undefined + /** + * Indicates whether the customer can customize their notification settings, such as the low-battery alert threshold. + */ + allow_notification_customization?: boolean | undefined /** * Whether to exclude this feature from the portal. */ @@ -1460,6 +1469,10 @@ export type CustomersPushDataParameters = { name?: string | undefined }> | undefined + /** + * Battery level, from 0 to 1, at or below which `device.low_battery` events fire for this customer's devices. Overrides the workspace and device defaults. Pass `null` to remove the customer's override. + */ + low_battery_alert_threshold?: number | null | undefined /** * List of short-term rental properties. */ diff --git a/src/lib/routes/devices/devices.ts b/src/lib/routes/devices/devices.ts index 9f908f01..02af575b 100644 --- a/src/lib/routes/devices/devices.ts +++ b/src/lib/routes/devices/devices.ts @@ -386,6 +386,7 @@ export type DevicesListParameters = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' | undefined /** * Array of device types for which you want to list devices. @@ -438,6 +439,7 @@ export type DevicesListParameters = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' > | undefined /** @@ -505,6 +507,7 @@ export type DevicesListParameters = { | 'kisi' | 'slack' | 'yacan' + | 'sonos' | undefined /** * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. diff --git a/src/lib/routes/devices/unmanaged/unmanaged.ts b/src/lib/routes/devices/unmanaged/unmanaged.ts index 1f01f4e5..9092b32c 100644 --- a/src/lib/routes/devices/unmanaged/unmanaged.ts +++ b/src/lib/routes/devices/unmanaged/unmanaged.ts @@ -333,6 +333,7 @@ export type DevicesUnmanagedListParameters = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' | undefined /** * Array of device types for which you want to list devices. @@ -385,6 +386,7 @@ export type DevicesUnmanagedListParameters = { | 'tapo_camera' | 'arlo_camera' | 'reolink_camera' + | 'sonos_speaker' > | undefined /** @@ -452,6 +454,7 @@ export type DevicesUnmanagedListParameters = { | 'kisi' | 'slack' | 'yacan' + | 'sonos' | undefined /** * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. diff --git a/src/lib/routes/seam-http-endpoints.ts b/src/lib/routes/seam-http-endpoints.ts index 97f414e5..d7f3ed26 100644 --- a/src/lib/routes/seam-http-endpoints.ts +++ b/src/lib/routes/seam-http-endpoints.ts @@ -2629,6 +2629,7 @@ export class SeamHttpEndpoints { /** * Deletes customer data including resources like spaces, properties, rooms, users, etc. * This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + * Space keys also match spaces created directly with a `space_key` (for example, through `/spaces/create`). */ get '/customers/delete_data'(): ( parameters?: CustomersDeleteDataParameters,