From b2b48eb575110dfb29a078c0284e75ad162d8bf7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 09:54:13 +0000 Subject: [PATCH 1/2] feat(deps-dev): bump the seam group with 2 updates Bumps the seam group with 2 updates: [@seamapi/fake-seam-connect](https://github.com/seamapi/fake-seam-connect) and [@seamapi/types](https://github.com/seamapi/types). Updates `@seamapi/fake-seam-connect` from 2.0.4 to 2.0.5 - [Release notes](https://github.com/seamapi/fake-seam-connect/releases) - [Commits](https://github.com/seamapi/fake-seam-connect/compare/v2.0.4...v2.0.5) Updates `@seamapi/types` from 1.1016.0 to 1.1037.0 - [Release notes](https://github.com/seamapi/types/releases) - [Commits](https://github.com/seamapi/types/compare/v1.1016.0...v1.1037.0) --- updated-dependencies: - dependency-name: "@seamapi/fake-seam-connect" dependency-version: 2.0.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: seam - dependency-name: "@seamapi/types" dependency-version: 1.1037.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: seam ... Signed-off-by: dependabot[bot] --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2c35ab..2cb6e40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,9 @@ "name": "@seamapi/python", "devDependencies": { "@seamapi/blueprint": "^1.8.0", - "@seamapi/fake-seam-connect": "2.0.4", + "@seamapi/fake-seam-connect": "2.0.5", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1016.0", + "@seamapi/types": "1.1037.0", "change-case": "^5.4.4", "prettier": "^3.2.5" }, @@ -802,9 +802,9 @@ } }, "node_modules/@seamapi/fake-seam-connect": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-2.0.4.tgz", - "integrity": "sha512-pgPUhIMW462B3jIWTuhH/aK2wUxRuOLjhsjB7YxdXw2g+hTVRJ5w4t01spETu1g2bch3Rzffd0whUVLeC4vjwQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-2.0.5.tgz", + "integrity": "sha512-dnHoZtHUHyQP9yqduEqE8dfmOJGMMt0MuqviwgOZo8ElAaPoZk/G+QM5MDg2LJ6q0t54kARYjSngp+IfTme6TQ==", "dev": true, "license": "MIT", "bin": { @@ -853,9 +853,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.1016.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1016.0.tgz", - "integrity": "sha512-yMVKcpA8NK+PVrSxvvqEDnsBdzXJ5A0LBPclYqNynt+BPIw93ZNLDStViKEmpY7PvWRzXUhe//1il2tkhSpkYw==", + "version": "1.1037.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1037.0.tgz", + "integrity": "sha512-3HbkUbACvkQsybIOdmDslMHRXPePrPgZ6WwX6pXO8MyO8o3hMsxy5qTr+HJZbG6tTSqMHQ8HP1uVLZIk+WrN5A==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 26a8cc1..ec4363c 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,9 @@ "packageManager": "npm@11.19.0", "devDependencies": { "@seamapi/blueprint": "^1.8.0", - "@seamapi/fake-seam-connect": "2.0.4", + "@seamapi/fake-seam-connect": "2.0.5", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1016.0", + "@seamapi/types": "1.1037.0", "change-case": "^5.4.4", "prettier": "^3.2.5" } From bb7e7a7279a74714a9da1ca712262cd480b1c895 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Mon, 24 Aug 2026 09:54:48 +0000 Subject: [PATCH 2/2] ci: Generate code --- seam/resources/access_code.py | 112 ++++++++++++++++++++++++ seam/resources/device.py | 31 +++++-- seam/resources/seam_event.py | 4 + seam/resources/unmanaged_access_code.py | 112 ++++++++++++++++++++++++ seam/resources/unmanaged_device.py | 29 ++++++ seam/resources/workspace.py | 4 +- seam/routes/acs_users.py | 32 +++---- seam/routes/client_sessions.py | 33 +++---- seam/routes/connect_webviews.py | 8 +- seam/routes/connected_accounts.py | 8 +- seam/routes/devices.py | 16 ++-- seam/routes/devices_unmanaged.py | 8 +- seam/routes/events.py | 40 +++++++++ seam/routes/locks.py | 8 +- seam/routes/workspaces.py | 16 ++-- 15 files changed, 389 insertions(+), 72 deletions(-) diff --git a/seam/resources/access_code.py b/seam/resources/access_code.py index ce1dccd..0a1b094 100644 --- a/seam/resources/access_code.py +++ b/seam/resources/access_code.py @@ -372,6 +372,87 @@ def from_dict(cls, d: Any): message=d.get("message", None), ) + @dataclass + class FailedToIssueError(ResourceMapping): + """Seam was unable to issue this access code before its start time, so the recipient may be unable to unlock the device. This usually points to a problem that needs attention, such as an offline or disconnected device. Seam keeps retrying, and this error clears automatically if the access code is eventually issued. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_issue"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + + @dataclass + class FailedToUpdateError(ResourceMapping): + """Seam was unable to apply this access code's requested update to the device, so the code on the device does not match its requested state. Seam keeps retrying, and this error clears automatically once the update is applied. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_update"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + + @dataclass + class FailedToExpireError(ResourceMapping): + """This access code is still active on the device even though its ``ends_at`` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to remove it, and this error clears automatically once the access code is no longer active. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_expire"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + @dataclass class AccountDisconnectedError(ResourceMapping): """Indicates that the account is disconnected. @@ -1185,6 +1266,29 @@ def from_dict(cls, d: Any): warning_code=d.get("warning_code", None), ) + @dataclass + class DelayInIssuingWarning(ResourceMapping): + """Seam has not yet issued this access code, even though its start time is approaching, so access may not be ready when the recipient arrives. Seam is still attempting to issue it, and this warning clears automatically once issuance succeeds. + + :ivar created_at: Date and time at which Seam created the warning. + + :ivar message: Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + + :ivar warning_code: Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + """ + + created_at: Optional[str] + message: str + warning_code: Literal["delay_in_issuing"] + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + message=d.get("message", None), + warning_code=d.get("warning_code", None), + ) + @dataclass class ThirdPartyIntegrationDetectedWarning(ResourceMapping): """Third-party integration detected that may cause access codes to fail. @@ -1332,6 +1436,9 @@ def from_dict(cls, d: Any): ConflictingExternalModificationError, AccessCodeInactiveError, CodeConstraintsViolatedError, + FailedToIssueError, + FailedToUpdateError, + FailedToExpireError, AccountDisconnectedError, SaltoKsSubscriptionLimitExceededError, InsufficientPermissionsError, @@ -1356,6 +1463,9 @@ def from_dict(cls, d: Any): "conflicting_external_modification": ConflictingExternalModificationError, "access_code_inactive": AccessCodeInactiveError, "code_constraints_violated": CodeConstraintsViolatedError, + "failed_to_issue": FailedToIssueError, + "failed_to_update": FailedToUpdateError, + "failed_to_expire": FailedToExpireError, "account_disconnected": AccountDisconnectedError, "salto_ks_subscription_limit_exceeded": SaltoKsSubscriptionLimitExceededError, "insufficient_permissions": InsufficientPermissionsError, @@ -1395,6 +1505,7 @@ def from_dict(cls, d: Any): ExternalModificationInEffectWarning, DelayInSettingOnDeviceWarning, DelayInRemovingFromDeviceWarning, + DelayInIssuingWarning, ThirdPartyIntegrationDetectedWarning, IglooAlgopinMustBeUsedWithin24HoursWarning, ManagementTransferredWarning, @@ -1408,6 +1519,7 @@ def from_dict(cls, d: Any): "external_modification_in_effect": ExternalModificationInEffectWarning, "delay_in_setting_on_device": DelayInSettingOnDeviceWarning, "delay_in_removing_from_device": DelayInRemovingFromDeviceWarning, + "delay_in_issuing": DelayInIssuingWarning, "third_party_integration_detected": ThirdPartyIntegrationDetectedWarning, "igloo_algopin_must_be_used_within_24_hours": IglooAlgopinMustBeUsedWithin24HoursWarning, "management_transferred": ManagementTransferredWarning, diff --git a/seam/resources/device.py b/seam/resources/device.py index 8dd1cf7..d9ce544 100644 --- a/seam/resources/device.py +++ b/seam/resources/device.py @@ -2058,14 +2058,11 @@ class SensiMetadata(ResourceMapping): :ivar dual_setpoints_not_supported: Set to true when the device does not support the /dual-setpoints API endpoint. - :ivar enforced_setpoint_range_celsius: Enforced setpoint range in Celsius for a Sensi device, derived from an OutOfRange API error. - :ivar product_type: Product type for a Sensi device.""" device_id: Optional[str] device_name: Optional[str] dual_setpoints_not_supported: Optional[bool] - enforced_setpoint_range_celsius: Optional[List[float]] product_type: Optional[str] @classmethod @@ -2076,9 +2073,6 @@ def from_dict(cls, d: Any): dual_setpoints_not_supported=d.get( "dual_setpoints_not_supported", None ), - enforced_setpoint_range_celsius=d.get( - "enforced_setpoint_range_celsius", None - ), product_type=d.get("product_type", None), ) @@ -4195,6 +4189,29 @@ def from_dict(cls, d: Any): warning_code=d.get("warning_code", None), ) + @dataclass + class AccessoryKeypadLowBatteryWarning(ResourceMapping): + """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. + + :ivar created_at: Date and time at which Seam created the warning. + + :ivar message: Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + + :ivar warning_code: Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + """ + + created_at: str + message: str + warning_code: Literal["accessory_keypad_low_battery"] + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + message=d.get("message", None), + warning_code=d.get("warning_code", None), + ) + @dataclass class UnreliableOnlineStatusWarning(ResourceMapping): """Indicates that the device may optimistically be reported as online because the provider does not reliably report its online status. @@ -4310,6 +4327,7 @@ def from_dict(cls, d: Any): ProviderIssueWarning, KeynestUnsupportedLockerWarning, AccessoryKeypadSetupRequiredWarning, + AccessoryKeypadLowBatteryWarning, UnreliableOnlineStatusWarning, MaxAccessCodesReachedWarning, ] @@ -4339,6 +4357,7 @@ def from_dict(cls, d: Any): "provider_issue": ProviderIssueWarning, "keynest_unsupported_locker": KeynestUnsupportedLockerWarning, "accessory_keypad_setup_required": AccessoryKeypadSetupRequiredWarning, + "accessory_keypad_low_battery": AccessoryKeypadLowBatteryWarning, "unreliable_online_status": UnreliableOnlineStatusWarning, "max_access_codes_reached": MaxAccessCodesReachedWarning, } diff --git a/seam/resources/seam_event.py b/seam/resources/seam_event.py index c85a4ed..f271d78 100644 --- a/seam/resources/seam_event.py +++ b/seam/resources/seam_event.py @@ -5558,6 +5558,8 @@ class DeviceLowBatteryEvent: :ivar battery_level: Number in the range 0 to 1.0 indicating the amount of battery in the affected device, as reported by the device. + :ivar battery_source: Battery that dropped below the low threshold. ``lock``: the lock's own battery. ``accessory_keypad``: a paired accessory keypad's battery. Omitted for events emitted before this field existed, which always refer to the lock's own battery. + :ivar connected_account_custom_metadata: Custom metadata of the connected account, present when connected_account_id is provided. :ivar connected_account_id: ID of the connected account associated with the event. @@ -5581,6 +5583,7 @@ class DeviceLowBatteryEvent: :ivar workspace_id: ID of the workspace associated with the event.""" battery_level: float + battery_source: Optional[Literal["lock", "accessory_keypad"]] connected_account_custom_metadata: Optional[Dict[str, Union[str, bool]]] connected_account_id: str created_at: str @@ -5597,6 +5600,7 @@ class DeviceLowBatteryEvent: def from_dict(cls, d: Any): return cls( battery_level=d.get("battery_level", None), + battery_source=d.get("battery_source", None), connected_account_custom_metadata=DeepAttrDict( d.get("connected_account_custom_metadata", None) ), diff --git a/seam/resources/unmanaged_access_code.py b/seam/resources/unmanaged_access_code.py index 4b3d550..bf88e62 100644 --- a/seam/resources/unmanaged_access_code.py +++ b/seam/resources/unmanaged_access_code.py @@ -358,6 +358,87 @@ def from_dict(cls, d: Any): message=d.get("message", None), ) + @dataclass + class FailedToIssueError(ResourceMapping): + """Seam was unable to issue this access code before its start time, so the recipient may be unable to unlock the device. This usually points to a problem that needs attention, such as an offline or disconnected device. Seam keeps retrying, and this error clears automatically if the access code is eventually issued. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_issue"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + + @dataclass + class FailedToUpdateError(ResourceMapping): + """Seam was unable to apply this access code's requested update to the device, so the code on the device does not match its requested state. Seam keeps retrying, and this error clears automatically once the update is applied. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_update"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + + @dataclass + class FailedToExpireError(ResourceMapping): + """This access code is still active on the device even though its ``ends_at`` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to remove it, and this error clears automatically once the access code is no longer active. + + :ivar created_at: Date and time at which Seam created the error. + + :ivar error_code: Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + + :ivar is_access_code_error: Indicates that this is an access code error. + + :ivar message: Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + """ + + created_at: Optional[str] + error_code: Literal["failed_to_expire"] + is_access_code_error: Literal[True] + message: str + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + error_code=d.get("error_code", None), + is_access_code_error=d.get("is_access_code_error", None), + message=d.get("message", None), + ) + @dataclass class AccountDisconnectedError(ResourceMapping): """Indicates that the account is disconnected. @@ -904,6 +985,29 @@ def from_dict(cls, d: Any): warning_code=d.get("warning_code", None), ) + @dataclass + class DelayInIssuingWarning(ResourceMapping): + """Seam has not yet issued this access code, even though its start time is approaching, so access may not be ready when the recipient arrives. Seam is still attempting to issue it, and this warning clears automatically once issuance succeeds. + + :ivar created_at: Date and time at which Seam created the warning. + + :ivar message: Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + + :ivar warning_code: Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + """ + + created_at: Optional[str] + message: str + warning_code: Literal["delay_in_issuing"] + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + message=d.get("message", None), + warning_code=d.get("warning_code", None), + ) + @dataclass class ThirdPartyIntegrationDetectedWarning(ResourceMapping): """Third-party integration detected that may cause access codes to fail. @@ -1051,6 +1155,9 @@ def from_dict(cls, d: Any): ConflictingExternalModificationError, AccessCodeInactiveError, CodeConstraintsViolatedError, + FailedToIssueError, + FailedToUpdateError, + FailedToExpireError, AccountDisconnectedError, SaltoKsSubscriptionLimitExceededError, InsufficientPermissionsError, @@ -1075,6 +1182,9 @@ def from_dict(cls, d: Any): "conflicting_external_modification": ConflictingExternalModificationError, "access_code_inactive": AccessCodeInactiveError, "code_constraints_violated": CodeConstraintsViolatedError, + "failed_to_issue": FailedToIssueError, + "failed_to_update": FailedToUpdateError, + "failed_to_expire": FailedToExpireError, "account_disconnected": AccountDisconnectedError, "salto_ks_subscription_limit_exceeded": SaltoKsSubscriptionLimitExceededError, "insufficient_permissions": InsufficientPermissionsError, @@ -1097,6 +1207,7 @@ def from_dict(cls, d: Any): ExternalModificationInEffectWarning, DelayInSettingOnDeviceWarning, DelayInRemovingFromDeviceWarning, + DelayInIssuingWarning, ThirdPartyIntegrationDetectedWarning, IglooAlgopinMustBeUsedWithin24HoursWarning, ManagementTransferredWarning, @@ -1110,6 +1221,7 @@ def from_dict(cls, d: Any): "external_modification_in_effect": ExternalModificationInEffectWarning, "delay_in_setting_on_device": DelayInSettingOnDeviceWarning, "delay_in_removing_from_device": DelayInRemovingFromDeviceWarning, + "delay_in_issuing": DelayInIssuingWarning, "third_party_integration_detected": ThirdPartyIntegrationDetectedWarning, "igloo_algopin_must_be_used_within_24_hours": IglooAlgopinMustBeUsedWithin24HoursWarning, "management_transferred": ManagementTransferredWarning, diff --git a/seam/resources/unmanaged_device.py b/seam/resources/unmanaged_device.py index aa1f4f3..4faf662 100644 --- a/seam/resources/unmanaged_device.py +++ b/seam/resources/unmanaged_device.py @@ -67,6 +67,8 @@ class UnmanagedDevice: :ivar device_type: Type of the device. + :ivar display_name: 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. + :ivar errors: 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. :ivar is_managed: Indicates that Seam does not manage the device. @@ -1252,6 +1254,29 @@ def from_dict(cls, d: Any): warning_code=d.get("warning_code", None), ) + @dataclass + class AccessoryKeypadLowBatteryWarning(ResourceMapping): + """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. + + :ivar created_at: Date and time at which Seam created the warning. + + :ivar message: Detailed description of the warning. Provides insights into the issue and potentially how to rectify it. + + :ivar warning_code: Unique identifier of the type of warning. Enables quick recognition and categorization of the issue. + """ + + created_at: str + message: str + warning_code: Literal["accessory_keypad_low_battery"] + + @classmethod + def from_dict(cls, d: Any): + return cls( + created_at=d.get("created_at", None), + message=d.get("message", None), + warning_code=d.get("warning_code", None), + ) + @dataclass class UnreliableOnlineStatusWarning(ResourceMapping): """Indicates that the device may optimistically be reported as online because the provider does not reliably report its online status. @@ -1367,6 +1392,7 @@ def from_dict(cls, d: Any): ProviderIssueWarning, KeynestUnsupportedLockerWarning, AccessoryKeypadSetupRequiredWarning, + AccessoryKeypadLowBatteryWarning, UnreliableOnlineStatusWarning, MaxAccessCodesReachedWarning, ] @@ -1396,6 +1422,7 @@ def from_dict(cls, d: Any): "provider_issue": ProviderIssueWarning, "keynest_unsupported_locker": KeynestUnsupportedLockerWarning, "accessory_keypad_setup_required": AccessoryKeypadSetupRequiredWarning, + "accessory_keypad_low_battery": AccessoryKeypadLowBatteryWarning, "unreliable_online_status": UnreliableOnlineStatusWarning, "max_access_codes_reached": MaxAccessCodesReachedWarning, } @@ -1474,6 +1501,7 @@ def from_dict(cls, d: Any): "android_phone", "ring_camera", ] + display_name: str errors: List[Errors] is_managed: Literal[False] location: Optional[Location] @@ -1524,6 +1552,7 @@ def from_dict(cls, d: Any): custom_metadata=DeepAttrDict(d.get("custom_metadata", None)), device_id=d.get("device_id", None), device_type=d.get("device_type", None), + display_name=d.get("display_name", None), errors=[ _from_discriminated_dict(i, cls._ErrorsVariants, "error_code") for i in d.get("errors") or [] diff --git a/seam/resources/workspace.py b/seam/resources/workspace.py index 6e9616e..42478f8 100644 --- a/seam/resources/workspace.py +++ b/seam/resources/workspace.py @@ -8,9 +8,9 @@ class Workspace: """Represents a Seam `workspace `_. A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A `sandbox workspace `_ is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a `production workspace `_. - :ivar company_name: Company name associated with the `workspace `_. + :ivar company_name: Deprecated: Use ``connect_partner_name`` instead. Company name associated with the `workspace `_. - :ivar connect_partner_name: Deprecated: Use ``company_name`` instead. + :ivar connect_partner_name: Seam Connect partner name associated with the `workspace `_. :ivar connect_webview_customization: diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index ffbcdd3..2bafe82 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -106,9 +106,9 @@ def list( limit: Optional[int] = None, page_cursor: Optional[Union[str, Null]] = None, search: Optional[str] = None, - user_identity_email_address: Optional[str] = None, + user_identity_email_address: Optional[Union[str, Null]] = None, user_identity_id: Optional[str] = None, - user_identity_phone_number: Optional[str] = None, + user_identity_phone_number: Optional[Union[str, Null]] = None, ) -> List[AcsUser]: """Returns a list of all `access system users `_. @@ -122,11 +122,11 @@ def list( :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. Specify ``null`` to retrieve access system users whose user identity has no email address. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). Specify ``null`` to retrieve access system users whose user identity has no phone number. :returns: OK""" raise NotImplementedError() @@ -366,9 +366,9 @@ async def list( limit: Optional[int] = None, page_cursor: Optional[Union[str, Null]] = None, search: Optional[str] = None, - user_identity_email_address: Optional[str] = None, + user_identity_email_address: Optional[Union[str, Null]] = None, user_identity_id: Optional[str] = None, - user_identity_phone_number: Optional[str] = None, + user_identity_phone_number: Optional[Union[str, Null]] = None, ) -> List[AcsUser]: """Returns a list of all `access system users `_. @@ -382,11 +382,11 @@ async def list( :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. Specify ``null`` to retrieve access system users whose user identity has no email address. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). Specify ``null`` to retrieve access system users whose user identity has no phone number. :returns: OK""" raise NotImplementedError() @@ -707,9 +707,9 @@ def list( limit: Optional[int] = None, page_cursor: Optional[Union[str, Null]] = None, search: Optional[str] = None, - user_identity_email_address: Optional[str] = None, + user_identity_email_address: Optional[Union[str, Null]] = None, user_identity_id: Optional[str] = None, - user_identity_phone_number: Optional[str] = None, + user_identity_phone_number: Optional[Union[str, Null]] = None, ) -> List[AcsUser]: """Returns a list of all `access system users `_. @@ -723,11 +723,11 @@ def list( :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. Specify ``null`` to retrieve access system users whose user identity has no email address. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). Specify ``null`` to retrieve access system users whose user identity has no phone number. :returns: OK""" params: Dict[str, Any] = {} @@ -1193,9 +1193,9 @@ async def list( limit: Optional[int] = None, page_cursor: Optional[Union[str, Null]] = None, search: Optional[str] = None, - user_identity_email_address: Optional[str] = None, + user_identity_email_address: Optional[Union[str, Null]] = None, user_identity_id: Optional[str] = None, - user_identity_phone_number: Optional[str] = None, + user_identity_phone_number: Optional[Union[str, Null]] = None, ) -> List[AcsUser]: """Returns a list of all `access system users `_. @@ -1209,11 +1209,11 @@ async def list( :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. Specify ``null`` to retrieve access system users whose user identity has no email address. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). Specify ``null`` to retrieve access system users whose user identity has no phone number. :returns: OK""" params: Dict[str, Any] = {} diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index c48416d..d57b141 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -2,6 +2,7 @@ import abc from ..client import SeamHttpClient, AsyncSeamHttpClient from ..route import route_metadata +from ..null import Null from ..resources import ClientSession @@ -127,20 +128,20 @@ def list( self, *, client_session_id: Optional[str] = None, - connect_webview_id: Optional[str] = None, + connect_webview_id: Optional[Union[str, Null]] = None, user_identifier_key: Optional[str] = None, - user_identity_id: Optional[str] = None, + user_identity_id: Optional[Union[str, Null]] = None, without_user_identifier_key: Optional[bool] = None, ) -> List[ClientSession]: """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a Connect Webview. :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a user identity. :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. @@ -281,20 +282,20 @@ async def list( self, *, client_session_id: Optional[str] = None, - connect_webview_id: Optional[str] = None, + connect_webview_id: Optional[Union[str, Null]] = None, user_identifier_key: Optional[str] = None, - user_identity_id: Optional[str] = None, + user_identity_id: Optional[Union[str, Null]] = None, without_user_identifier_key: Optional[bool] = None, ) -> List[ClientSession]: """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a Connect Webview. :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a user identity. :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. @@ -541,20 +542,20 @@ def list( self, *, client_session_id: Optional[str] = None, - connect_webview_id: Optional[str] = None, + connect_webview_id: Optional[Union[str, Null]] = None, user_identifier_key: Optional[str] = None, - user_identity_id: Optional[str] = None, + user_identity_id: Optional[Union[str, Null]] = None, without_user_identifier_key: Optional[bool] = None, ) -> List[ClientSession]: """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a Connect Webview. :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a user identity. :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. @@ -834,20 +835,20 @@ async def list( self, *, client_session_id: Optional[str] = None, - connect_webview_id: Optional[str] = None, + connect_webview_id: Optional[Union[str, Null]] = None, user_identifier_key: Optional[str] = None, - user_identity_id: Optional[str] = None, + user_identity_id: Optional[Union[str, Null]] = None, without_user_identifier_key: Optional[bool] = None, ) -> List[ClientSession]: """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a Connect Webview. :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. Specify ``null`` to retrieve client sessions that are not associated with a user identity. :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index 25855a6..7ba0635 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -182,7 +182,7 @@ def list( ) -> List[ConnectWebview]: """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list connect webviews. @@ -374,7 +374,7 @@ async def list( ) -> List[ConnectWebview]: """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list connect webviews. @@ -634,7 +634,7 @@ def list( ) -> List[ConnectWebview]: """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list connect webviews. @@ -911,7 +911,7 @@ async def list( ) -> List[ConnectWebview]: """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list connect webviews. diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index db3ccfb..50530e8 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -61,7 +61,7 @@ def list( ) -> List[ConnectedAccount]: """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key by which you want to filter connected accounts. @@ -171,7 +171,7 @@ async def list( ) -> List[ConnectedAccount]: """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key by which you want to filter connected accounts. @@ -322,7 +322,7 @@ def list( ) -> List[ConnectedAccount]: """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key by which you want to filter connected accounts. @@ -538,7 +538,7 @@ async def list( ) -> List[ConnectedAccount]: """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key by which you want to filter connected accounts. diff --git a/seam/routes/devices.py b/seam/routes/devices.py index 8519d43..55f80df 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -169,7 +169,6 @@ def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -192,6 +191,7 @@ def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -227,7 +227,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list devices. @@ -473,7 +473,6 @@ async def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -496,6 +495,7 @@ async def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -531,7 +531,7 @@ async def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list devices. @@ -796,7 +796,6 @@ def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -819,6 +818,7 @@ def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -854,7 +854,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list devices. @@ -1207,7 +1207,6 @@ async def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -1230,6 +1229,7 @@ async def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -1265,7 +1265,7 @@ async def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify an empty string to match a key that is unset or set to an empty string. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. Key names cannot contain a period (.). Specify ``null`` to match a key that is unset. A key given an empty string is omitted from the filter. :param customer_key: Customer key for which you want to list devices. diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index 0da140c..d73348c 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -148,7 +148,6 @@ def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -171,6 +170,7 @@ def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -388,7 +388,6 @@ async def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -411,6 +410,7 @@ async def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -653,7 +653,6 @@ def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -676,6 +675,7 @@ def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", @@ -967,7 +967,6 @@ async def list( "keywe", "kwikset", "linear", - "lockly", "nuki", "philia", "salto", @@ -990,6 +989,7 @@ async def list( "honeywell_resideo", "keynest", "korelock", + "lockly", "minut", "nest", "noiseaware", diff --git a/seam/routes/events.py b/seam/routes/events.py index 298cf0d..4250914 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -65,6 +65,11 @@ def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -179,6 +184,11 @@ def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -411,6 +421,11 @@ async def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -525,6 +540,11 @@ async def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -778,6 +798,11 @@ def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -892,6 +917,11 @@ def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -1209,6 +1239,11 @@ async def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", @@ -1323,6 +1358,11 @@ async def list( "access_code.removed_from_device", "access_code.delay_in_setting_on_device", "access_code.failed_to_set_on_device", + "access_code.issued", + "access_code.delay_in_issuing", + "access_code.failed_to_issue", + "access_code.failed_to_update", + "access_code.failed_to_expire", "access_code.deleted", "access_code.delay_in_removing_from_device", "access_code.failed_to_remove_from_device", diff --git a/seam/routes/locks.py b/seam/routes/locks.py index d150e87..7fda971 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -154,7 +154,6 @@ def list( "genie", "igloo", "linear", - "lockly", "kwikset", "nuki", "salto", @@ -173,6 +172,7 @@ def list( "akiles", "aqara", "korelock", + "lockly", "smartthings", "ultraloq", "omnitec", @@ -374,7 +374,6 @@ async def list( "genie", "igloo", "linear", - "lockly", "kwikset", "nuki", "salto", @@ -393,6 +392,7 @@ async def list( "akiles", "aqara", "korelock", + "lockly", "smartthings", "ultraloq", "omnitec", @@ -643,7 +643,6 @@ def list( "genie", "igloo", "linear", - "lockly", "kwikset", "nuki", "salto", @@ -662,6 +661,7 @@ def list( "akiles", "aqara", "korelock", + "lockly", "smartthings", "ultraloq", "omnitec", @@ -975,7 +975,6 @@ async def list( "genie", "igloo", "linear", - "lockly", "kwikset", "nuki", "salto", @@ -994,6 +993,7 @@ async def list( "akiles", "aqara", "korelock", + "lockly", "smartthings", "ultraloq", "omnitec", diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 27d6f87..26106b9 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -31,9 +31,9 @@ def create( :param name: Name of the new workspace. - :param company_name: Company name for the new workspace. + :param company_name: Deprecated: Use ``connect_partner_name`` instead. Company name for the new workspace. - :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + :param connect_partner_name: Connect partner name for the new workspace. :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. @@ -128,9 +128,9 @@ async def create( :param name: Name of the new workspace. - :param company_name: Company name for the new workspace. + :param company_name: Deprecated: Use ``connect_partner_name`` instead. Company name for the new workspace. - :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + :param connect_partner_name: Connect partner name for the new workspace. :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. @@ -230,9 +230,9 @@ def create( :param name: Name of the new workspace. - :param company_name: Company name for the new workspace. + :param company_name: Deprecated: Use ``connect_partner_name`` instead. Company name for the new workspace. - :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + :param connect_partner_name: Connect partner name for the new workspace. :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. @@ -419,9 +419,9 @@ async def create( :param name: Name of the new workspace. - :param company_name: Company name for the new workspace. + :param company_name: Deprecated: Use ``connect_partner_name`` instead. Company name for the new workspace. - :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + :param connect_partner_name: Connect partner name for the new workspace. :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_.