diff --git a/package-lock.json b/package-lock.json index 1a81c460..6663344f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@seamapi/blueprint": "^1.12.0", "@seamapi/fake-seam-connect": "2.0.6", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1110.0", + "@seamapi/types": "1.1113.0", "change-case": "^5.4.4", "execa": "^10.0.1", "prettier": "^3.9.6" @@ -882,9 +882,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.1110.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1110.0.tgz", - "integrity": "sha512-+nUcDE58Siv1rnuK0okVjPCBE4CvrUjEhuz+hGxWz49l+vyPm9ls6DzwLzLQMxn8Orpy2QFgAbpe741rDh3atw==", + "version": "1.1113.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.1113.0.tgz", + "integrity": "sha512-lkOl4x/2kPppPp5p2PoT2ohAI3pnKziv1przlDZscNnkVed0sDu7DZa+B4kyJ6YFmrPrbLNsf8i1c0D+Aw8byQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 65f6bad2..539dc6f8 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@seamapi/blueprint": "^1.12.0", "@seamapi/fake-seam-connect": "2.0.6", "@seamapi/smith": "^1.1.0", - "@seamapi/types": "1.1110.0", + "@seamapi/types": "1.1113.0", "change-case": "^5.4.4", "execa": "^10.0.1", "prettier": "^3.9.6" diff --git a/src/Resources/AcsSystem.php b/src/Resources/AcsSystem.php index 8c69e308..a3df9a2d 100644 --- a/src/Resources/AcsSystem.php +++ b/src/Resources/AcsSystem.php @@ -185,6 +185,10 @@ public static function from_json(mixed $json): Errors|null => \Seam\Resources\AcsSystem\Errors\SaltoKsSubscriptionLimitExceeded::from_json( $json, ), + \Seam\Resources\AcsSystem\Errors\ErrorCode::USER_LICENSE_LIMIT_REACHED + => \Seam\Resources\AcsSystem\Errors\UserLicenseLimitReached::from_json( + $json, + ), \Seam\Resources\AcsSystem\Errors\ErrorCode::INSUFFICIENT_PERMISSIONS => \Seam\Resources\AcsSystem\Errors\InsufficientPermissions::from_json( $json, @@ -567,6 +571,48 @@ public function __construct( } } + /** + * 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. + */ + final class UserLicenseLimitReached extends \Seam\Resources\AcsSystem\Errors + { + public static function from_json( + mixed $json, + ): UserLicenseLimitReached|null { + if (!$json) { + return null; + } + return new self( + created_at: $json->created_at ?? null, + error_code: $json->error_code ?? null, + message: $json->message ?? null, + ); + } + + public function __construct( + /** + * Date and time at which Seam created the error. + */ + string|null $created_at, + /** + * Unique identifier of the type of error. Enables quick recognition and categorization of the issue. + * + * @var value-of<\Seam\Resources\AcsSystem\Errors\ErrorCode>|string|null + */ + string|null $error_code, + /** + * Detailed description of the error. Provides insights into the issue and potentially how to rectify it. + */ + string|null $message, + ) { + parent::__construct( + created_at: $created_at, + error_code: $error_code, + message: $message, + ); + } + } + /** * Indicates that the provider's system backing this [access control system](https://www.seam.co/docs/low-level-apis/access-systems) is not letting Seam act on it, so access cannot be managed until this is resolved. The error message says which of two causes applies. Either Seam's integration user does not have sufficient permissions on the provider's system, or has been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. Or the provider account or site does not have a valid subscription with the provider: set up or renew that subscription with the provider. */ @@ -784,6 +830,7 @@ enum ErrorCode: string case BRIDGE_DISCONNECTED = "bridge_disconnected"; case VISIONLINE_INSTANCE_UNREACHABLE = "visionline_instance_unreachable"; case SALTO_KS_SUBSCRIPTION_LIMIT_EXCEEDED = "salto_ks_subscription_limit_exceeded"; + case USER_LICENSE_LIMIT_REACHED = "user_license_limit_reached"; case INSUFFICIENT_PERMISSIONS = "insufficient_permissions"; case ACS_SYSTEM_DISCONNECTED = "acs_system_disconnected"; case ACCOUNT_DISCONNECTED = "account_disconnected"; diff --git a/src/Resources/Device.php b/src/Resources/Device.php index 8e341341..e5d286f1 100644 --- a/src/Resources/Device.php +++ b/src/Resources/Device.php @@ -4006,6 +4006,7 @@ public static function from_json(mixed $json): SonosMetadata|null } return new self( bonded_member_models: $json->bonded_member_models ?? null, + color: $json->color ?? null, household_id: $json->household_id ?? null, model_display_name: $json->model_display_name ?? null, player_id: $json->player_id ?? null, @@ -4021,6 +4022,10 @@ public function __construct( * @var list|null */ public array|null $bonded_member_models = null, + /** + * Color of the speaker, as reported by Sonos. + */ + public string|null $color = null, /** * ID of the Sonos household that the speaker belongs to. */