From 828fcd11cdaee6619c51f403e93c2467a69c0fb3 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Thu, 29 May 2025 14:35:52 -0700 Subject: [PATCH 1/3] Update types to 1.405.0 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb54f2d..e10726b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@prettier/plugin-php": "^0.22.1", "@seamapi/nextlove-sdk-generator": "1.18.1", - "@seamapi/types": "1.384.0", + "@seamapi/types": "1.405.0", "del": "^7.1.0", "prettier": "^3.0.0" } @@ -456,9 +456,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.384.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.384.0.tgz", - "integrity": "sha512-pFQF4O7LaLu9J2yfNxtiuN/kCYX5WH0Sdccx6BC1rYQqwQSD1m5/yXTq14iCBa6z2R8Fw09WRU5Zp+NjHtleQQ==", + "version": "1.405.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.405.0.tgz", + "integrity": "sha512-kcNY2tltFbmjI+KVn8qlRjFxQEd1eQAq0sacZ/TZ8uNu/jNlXSng8DkkfEHNvcTWd3v8h9FnY8xagweQZ/nBTg==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 29a8660..f67a1cb 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "devDependencies": { "@prettier/plugin-php": "^0.22.1", "@seamapi/nextlove-sdk-generator": "1.18.1", - "@seamapi/types": "1.384.0", + "@seamapi/types": "1.405.0", "del": "^7.1.0", "prettier": "^3.0.0" } From 79fcedd9da89097728346b2b3c6643d13793c239 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Thu, 29 May 2025 21:42:28 +0000 Subject: [PATCH 2/3] ci: Generate code --- .../AcsCredentialAssaAbloyVostioMetadata.php | 2 + src/Objects/AcsSystem.php | 11 - src/Objects/AcsUser.php | 10 +- .../DeviceActiveThermostatSchedule.php | 7 +- src/Objects/DeviceAvailableClimatePresets.php | 2 + src/Objects/DeviceCurrentClimateSetting.php | 2 + src/Objects/DeviceDefaultClimateSetting.php | 2 + src/Objects/DevicePeriods.php | 23 + src/Objects/DeviceProperties.php | 11 + src/Objects/DeviceThermostatDailyPrograms.php | 35 ++ src/Objects/DeviceThermostatWeeklyProgram.php | 36 ++ src/Objects/Event.php | 4 + src/Objects/PhoneRegistration.php | 27 + src/Objects/PhoneSession.php | 23 + src/Objects/PhoneSessionAcsCredentials.php | 95 ++++ src/Objects/PhoneSessionAcsEntrances.php | 68 +++ .../PhoneSessionAssaAbloyVostioMetadata.php | 30 + ...PhoneSessionDormakabaCommunityMetadata.php | 19 + src/Objects/PhoneSessionErrors.php | 25 + src/Objects/PhoneSessionLatchMetadata.php | 28 + src/Objects/PhoneSessionPhoneRegistration.php | 28 + src/Objects/PhoneSessionProfiles.php | 23 + src/Objects/PhoneSessionProviderSessions.php | 29 + src/Objects/PhoneSessionSaltoKsMetadata.php | 36 ++ .../PhoneSessionSaltoSpaceMetadata.php | 26 + .../PhoneSessionVisionlineMetadata.php | 29 + src/Objects/PhoneSessionWarnings.php | 25 + src/Objects/ThermostatSchedule.php | 7 +- ...edAcsCredentialAssaAbloyVostioMetadata.php | 2 + src/Objects/UnmanagedAcsUser.php | 10 +- src/Objects/Workspace.php | 4 + .../WorkspaceConnectWebviewCustomization.php | 30 + src/SeamClient.php | 515 +++++++++++++++--- 33 files changed, 1128 insertions(+), 96 deletions(-) create mode 100644 src/Objects/DevicePeriods.php create mode 100644 src/Objects/DeviceThermostatDailyPrograms.php create mode 100644 src/Objects/DeviceThermostatWeeklyProgram.php create mode 100644 src/Objects/PhoneRegistration.php create mode 100644 src/Objects/PhoneSession.php create mode 100644 src/Objects/PhoneSessionAcsCredentials.php create mode 100644 src/Objects/PhoneSessionAcsEntrances.php create mode 100644 src/Objects/PhoneSessionAssaAbloyVostioMetadata.php create mode 100644 src/Objects/PhoneSessionDormakabaCommunityMetadata.php create mode 100644 src/Objects/PhoneSessionErrors.php create mode 100644 src/Objects/PhoneSessionLatchMetadata.php create mode 100644 src/Objects/PhoneSessionPhoneRegistration.php create mode 100644 src/Objects/PhoneSessionProfiles.php create mode 100644 src/Objects/PhoneSessionProviderSessions.php create mode 100644 src/Objects/PhoneSessionSaltoKsMetadata.php create mode 100644 src/Objects/PhoneSessionSaltoSpaceMetadata.php create mode 100644 src/Objects/PhoneSessionVisionlineMetadata.php create mode 100644 src/Objects/PhoneSessionWarnings.php create mode 100644 src/Objects/WorkspaceConnectWebviewCustomization.php diff --git a/src/Objects/AcsCredentialAssaAbloyVostioMetadata.php b/src/Objects/AcsCredentialAssaAbloyVostioMetadata.php index 1d0c1ea..09f4819 100644 --- a/src/Objects/AcsCredentialAssaAbloyVostioMetadata.php +++ b/src/Objects/AcsCredentialAssaAbloyVostioMetadata.php @@ -11,6 +11,7 @@ public static function from_json( return null; } return new self( + auto_join: $json->auto_join ?? null, door_names: $json->door_names ?? null, endpoint_id: $json->endpoint_id ?? null, key_id: $json->key_id ?? null, @@ -21,6 +22,7 @@ public static function from_json( } public function __construct( + public bool|null $auto_join, public array|null $door_names, public string|null $endpoint_id, public string|null $key_id, diff --git a/src/Objects/AcsSystem.php b/src/Objects/AcsSystem.php index 95c5b81..0e770e7 100644 --- a/src/Objects/AcsSystem.php +++ b/src/Objects/AcsSystem.php @@ -30,13 +30,6 @@ public static function from_json(mixed $json): AcsSystem|null workspace_id: $json->workspace_id, acs_access_group_count: $json->acs_access_group_count ?? null, acs_user_count: $json->acs_user_count ?? null, - can_add_acs_users_to_acs_access_groups: $json->can_add_acs_users_to_acs_access_groups ?? - null, - can_automate_enrollment: $json->can_automate_enrollment ?? null, - can_create_acs_access_groups: $json->can_create_acs_access_groups ?? - null, - can_remove_acs_users_from_acs_access_groups: $json->can_remove_acs_users_from_acs_access_groups ?? - null, external_type: $json->external_type ?? null, external_type_display_name: $json->external_type_display_name ?? null, @@ -67,10 +60,6 @@ public function __construct( public string $workspace_id, public float|null $acs_access_group_count, public float|null $acs_user_count, - public bool|null $can_add_acs_users_to_acs_access_groups, - public bool|null $can_automate_enrollment, - public bool|null $can_create_acs_access_groups, - public bool|null $can_remove_acs_users_from_acs_access_groups, public string|null $external_type, public string|null $external_type_display_name, public string|null $system_type, diff --git a/src/Objects/AcsUser.php b/src/Objects/AcsUser.php index b3746fb..7c6bffb 100644 --- a/src/Objects/AcsUser.php +++ b/src/Objects/AcsUser.php @@ -12,6 +12,7 @@ public static function from_json(mixed $json): AcsUser|null return new self( acs_system_id: $json->acs_system_id, acs_user_id: $json->acs_user_id, + connected_account_id: $json->connected_account_id, created_at: $json->created_at, display_name: $json->display_name, errors: array_map( @@ -41,10 +42,7 @@ public static function from_json(mixed $json): AcsUser|null ), phone_number: $json->phone_number ?? null, user_identity_id: $json->user_identity_id ?? null, - is_latest_desired_state_synced_with_provider: $json->is_latest_desired_state_synced_with_provider ?? - null, - latest_desired_state_synced_with_provider_at: $json->latest_desired_state_synced_with_provider_at ?? - null, + last_successful_sync_at: $json->last_successful_sync_at ?? null, user_identity_email_address: $json->user_identity_email_address ?? null, user_identity_full_name: $json->user_identity_full_name ?? null, @@ -56,6 +54,7 @@ public static function from_json(mixed $json): AcsUser|null public function __construct( public string $acs_system_id, public string $acs_user_id, + public string $connected_account_id, public string $created_at, public string $display_name, public array $errors, @@ -73,8 +72,7 @@ public function __construct( public array|null $pending_mutations, public string|null $phone_number, public string|null $user_identity_id, - public bool|null $is_latest_desired_state_synced_with_provider, - public string|null $latest_desired_state_synced_with_provider_at, + public string|null $last_successful_sync_at, public string|null $user_identity_email_address, public string|null $user_identity_full_name, public string|null $user_identity_phone_number diff --git a/src/Objects/DeviceActiveThermostatSchedule.php b/src/Objects/DeviceActiveThermostatSchedule.php index fd5f2ad..3b18d48 100644 --- a/src/Objects/DeviceActiveThermostatSchedule.php +++ b/src/Objects/DeviceActiveThermostatSchedule.php @@ -21,9 +21,9 @@ public static function from_json( ), starts_at: $json->starts_at, thermostat_schedule_id: $json->thermostat_schedule_id, + workspace_id: $json->workspace_id, + is_override_allowed: $json->is_override_allowed ?? null, name: $json->name ?? null, - unstable_is_override_allowed: $json->unstable_is_override_allowed ?? - null, max_override_period_minutes: $json->max_override_period_minutes ?? null ); @@ -37,8 +37,9 @@ public function __construct( public array $errors, public string $starts_at, public string $thermostat_schedule_id, + public string $workspace_id, + public bool|null $is_override_allowed, public string|null $name, - public bool|null $unstable_is_override_allowed, public mixed $max_override_period_minutes ) { } diff --git a/src/Objects/DeviceAvailableClimatePresets.php b/src/Objects/DeviceAvailableClimatePresets.php index 3d35be6..b3bb51e 100644 --- a/src/Objects/DeviceAvailableClimatePresets.php +++ b/src/Objects/DeviceAvailableClimatePresets.php @@ -13,6 +13,7 @@ public static function from_json( return new self( can_delete: $json->can_delete, can_edit: $json->can_edit, + can_program: $json->can_program, climate_preset_key: $json->climate_preset_key, display_name: $json->display_name, manual_override_allowed: $json->manual_override_allowed, @@ -31,6 +32,7 @@ public static function from_json( public function __construct( public bool $can_delete, public bool $can_edit, + public bool $can_program, public string $climate_preset_key, public string $display_name, public bool $manual_override_allowed, diff --git a/src/Objects/DeviceCurrentClimateSetting.php b/src/Objects/DeviceCurrentClimateSetting.php index 532f7db..06294b0 100644 --- a/src/Objects/DeviceCurrentClimateSetting.php +++ b/src/Objects/DeviceCurrentClimateSetting.php @@ -13,6 +13,7 @@ public static function from_json( return new self( can_delete: $json->can_delete ?? null, can_edit: $json->can_edit ?? null, + can_program: $json->can_program ?? null, climate_preset_key: $json->climate_preset_key ?? null, cooling_set_point_celsius: $json->cooling_set_point_celsius ?? null, cooling_set_point_fahrenheit: $json->cooling_set_point_fahrenheit ?? @@ -31,6 +32,7 @@ public static function from_json( public function __construct( public bool|null $can_delete, public bool|null $can_edit, + public bool|null $can_program, public string|null $climate_preset_key, public float|null $cooling_set_point_celsius, public float|null $cooling_set_point_fahrenheit, diff --git a/src/Objects/DeviceDefaultClimateSetting.php b/src/Objects/DeviceDefaultClimateSetting.php index b5198bf..a2d2bdc 100644 --- a/src/Objects/DeviceDefaultClimateSetting.php +++ b/src/Objects/DeviceDefaultClimateSetting.php @@ -13,6 +13,7 @@ public static function from_json( return new self( can_delete: $json->can_delete ?? null, can_edit: $json->can_edit ?? null, + can_program: $json->can_program ?? null, climate_preset_key: $json->climate_preset_key ?? null, cooling_set_point_celsius: $json->cooling_set_point_celsius ?? null, cooling_set_point_fahrenheit: $json->cooling_set_point_fahrenheit ?? @@ -31,6 +32,7 @@ public static function from_json( public function __construct( public bool|null $can_delete, public bool|null $can_edit, + public bool|null $can_program, public string|null $climate_preset_key, public float|null $cooling_set_point_celsius, public float|null $cooling_set_point_fahrenheit, diff --git a/src/Objects/DevicePeriods.php b/src/Objects/DevicePeriods.php new file mode 100644 index 0000000..2dbd050 --- /dev/null +++ b/src/Objects/DevicePeriods.php @@ -0,0 +1,23 @@ +climate_preset_key, + starts_at_time: $json->starts_at_time + ); + } + + public function __construct( + public string $climate_preset_key, + public string $starts_at_time + ) { + } +} diff --git a/src/Objects/DeviceProperties.php b/src/Objects/DeviceProperties.php index 3eb6aef..b8a9998 100644 --- a/src/Objects/DeviceProperties.php +++ b/src/Objects/DeviceProperties.php @@ -226,6 +226,15 @@ public static function from_json(mixed $json): DeviceProperties|null $json->temperature_threshold ) : null, + thermostat_daily_programs: array_map( + fn($t) => DeviceThermostatDailyPrograms::from_json($t), + $json->thermostat_daily_programs ?? [] + ), + thermostat_weekly_program: isset($json->thermostat_weekly_program) + ? DeviceThermostatWeeklyProgram::from_json( + $json->thermostat_weekly_program + ) + : null, ttlock_metadata: isset($json->ttlock_metadata) ? DeviceTtlockMetadata::from_json($json->ttlock_metadata) : null, @@ -328,6 +337,8 @@ public function __construct( public float|null $temperature_celsius, public float|null $temperature_fahrenheit, public DeviceTemperatureThreshold|null $temperature_threshold, + public array|null $thermostat_daily_programs, + public DeviceThermostatWeeklyProgram|null $thermostat_weekly_program, public DeviceTtlockMetadata|null $ttlock_metadata, public DeviceTwoNMetadata|null $two_n_metadata, public DeviceVisionlineMetadata|null $visionline_metadata, diff --git a/src/Objects/DeviceThermostatDailyPrograms.php b/src/Objects/DeviceThermostatDailyPrograms.php new file mode 100644 index 0000000..ab3758b --- /dev/null +++ b/src/Objects/DeviceThermostatDailyPrograms.php @@ -0,0 +1,35 @@ +created_at, + device_id: $json->device_id, + periods: array_map( + fn($p) => DevicePeriods::from_json($p), + $json->periods ?? [] + ), + thermostat_daily_program_id: $json->thermostat_daily_program_id, + workspace_id: $json->workspace_id, + name: $json->name ?? null + ); + } + + public function __construct( + public string $created_at, + public string $device_id, + public array $periods, + public string $thermostat_daily_program_id, + public string $workspace_id, + public string|null $name + ) { + } +} diff --git a/src/Objects/DeviceThermostatWeeklyProgram.php b/src/Objects/DeviceThermostatWeeklyProgram.php new file mode 100644 index 0000000..bb07c20 --- /dev/null +++ b/src/Objects/DeviceThermostatWeeklyProgram.php @@ -0,0 +1,36 @@ +created_at, + friday_program_id: $json->friday_program_id ?? null, + monday_program_id: $json->monday_program_id ?? null, + saturday_program_id: $json->saturday_program_id ?? null, + sunday_program_id: $json->sunday_program_id ?? null, + thursday_program_id: $json->thursday_program_id ?? null, + tuesday_program_id: $json->tuesday_program_id ?? null, + wednesday_program_id: $json->wednesday_program_id ?? null + ); + } + + public function __construct( + public string $created_at, + public string|null $friday_program_id, + public string|null $monday_program_id, + public string|null $saturday_program_id, + public string|null $sunday_program_id, + public string|null $thursday_program_id, + public string|null $tuesday_program_id, + public string|null $wednesday_program_id + ) { + } +} diff --git a/src/Objects/Event.php b/src/Objects/Event.php index be37a1c..5dc14e8 100644 --- a/src/Objects/Event.php +++ b/src/Objects/Event.php @@ -11,6 +11,8 @@ public static function from_json(mixed $json): Event|null } return new self( access_code_id: $json->access_code_id ?? null, + access_grant_id: $json->access_grant_id ?? null, + access_method_id: $json->access_method_id ?? null, acs_access_group_id: $json->acs_access_group_id ?? null, acs_credential_id: $json->acs_credential_id ?? null, acs_encoder_id: $json->acs_encoder_id ?? null, @@ -70,6 +72,8 @@ public static function from_json(mixed $json): Event|null public function __construct( public string|null $access_code_id, + public string|null $access_grant_id, + public string|null $access_method_id, public string|null $acs_access_group_id, public string|null $acs_credential_id, public string|null $acs_encoder_id, diff --git a/src/Objects/PhoneRegistration.php b/src/Objects/PhoneRegistration.php new file mode 100644 index 0000000..2416874 --- /dev/null +++ b/src/Objects/PhoneRegistration.php @@ -0,0 +1,27 @@ +is_being_activated, + phone_registration_id: $json->phone_registration_id, + provider_state: $json->provider_state ?? null, + provider_name: $json->provider_name ?? null + ); + } + + public function __construct( + public bool $is_being_activated, + public string $phone_registration_id, + public mixed $provider_state, + public string|null $provider_name + ) { + } +} diff --git a/src/Objects/PhoneSession.php b/src/Objects/PhoneSession.php new file mode 100644 index 0000000..24cd490 --- /dev/null +++ b/src/Objects/PhoneSession.php @@ -0,0 +1,23 @@ + PhoneSessionProviderSessions::from_json($p), + $json->provider_sessions ?? [] + ) + ); + } + + public function __construct(public array $provider_sessions) + { + } +} diff --git a/src/Objects/PhoneSessionAcsCredentials.php b/src/Objects/PhoneSessionAcsCredentials.php new file mode 100644 index 0000000..dc31dd2 --- /dev/null +++ b/src/Objects/PhoneSessionAcsCredentials.php @@ -0,0 +1,95 @@ +access_method, + acs_credential_id: $json->acs_credential_id, + acs_entrances: array_map( + fn($a) => PhoneSessionAcsEntrances::from_json($a), + $json->acs_entrances ?? [] + ), + acs_system_id: $json->acs_system_id, + created_at: $json->created_at, + display_name: $json->display_name, + errors: array_map( + fn($e) => PhoneSessionErrors::from_json($e), + $json->errors ?? [] + ), + is_managed: $json->is_managed, + warnings: array_map( + fn($w) => PhoneSessionWarnings::from_json($w), + $json->warnings ?? [] + ), + workspace_id: $json->workspace_id, + acs_credential_pool_id: $json->acs_credential_pool_id ?? null, + acs_user_id: $json->acs_user_id ?? null, + assa_abloy_vostio_metadata: isset($json->assa_abloy_vostio_metadata) + ? PhoneSessionAssaAbloyVostioMetadata::from_json( + $json->assa_abloy_vostio_metadata + ) + : null, + ends_at: $json->ends_at ?? null, + external_type: $json->external_type ?? null, + external_type_display_name: $json->external_type_display_name ?? + null, + is_issued: $json->is_issued ?? null, + is_multi_phone_sync_credential: $json->is_multi_phone_sync_credential ?? + null, + is_one_time_use: $json->is_one_time_use ?? null, + parent_acs_credential_id: $json->parent_acs_credential_id ?? null, + starts_at: $json->starts_at ?? null, + visionline_metadata: isset($json->visionline_metadata) + ? PhoneSessionVisionlineMetadata::from_json( + $json->visionline_metadata + ) + : null, + card_number: $json->card_number ?? null, + code: $json->code ?? null, + is_latest_desired_state_synced_with_provider: $json->is_latest_desired_state_synced_with_provider ?? + null, + issued_at: $json->issued_at ?? null, + latest_desired_state_synced_with_provider_at: $json->latest_desired_state_synced_with_provider_at ?? + null + ); + } + + public function __construct( + public string $access_method, + public string $acs_credential_id, + public array $acs_entrances, + public string $acs_system_id, + public string $created_at, + public string $display_name, + public array $errors, + public bool $is_managed, + public array $warnings, + public string $workspace_id, + public string|null $acs_credential_pool_id, + public string|null $acs_user_id, + public PhoneSessionAssaAbloyVostioMetadata|null $assa_abloy_vostio_metadata, + public string|null $ends_at, + public string|null $external_type, + public string|null $external_type_display_name, + public bool|null $is_issued, + public bool|null $is_multi_phone_sync_credential, + public bool|null $is_one_time_use, + public string|null $parent_acs_credential_id, + public string|null $starts_at, + public PhoneSessionVisionlineMetadata|null $visionline_metadata, + public string|null $card_number, + public string|null $code, + public bool|null $is_latest_desired_state_synced_with_provider, + public string|null $issued_at, + public string|null $latest_desired_state_synced_with_provider_at + ) { + } +} diff --git a/src/Objects/PhoneSessionAcsEntrances.php b/src/Objects/PhoneSessionAcsEntrances.php new file mode 100644 index 0000000..dc9529f --- /dev/null +++ b/src/Objects/PhoneSessionAcsEntrances.php @@ -0,0 +1,68 @@ +acs_entrance_id, + acs_system_id: $json->acs_system_id, + created_at: $json->created_at, + display_name: $json->display_name, + errors: array_map( + fn($e) => PhoneSessionErrors::from_json($e), + $json->errors ?? [] + ), + assa_abloy_vostio_metadata: isset($json->assa_abloy_vostio_metadata) + ? PhoneSessionAssaAbloyVostioMetadata::from_json( + $json->assa_abloy_vostio_metadata + ) + : null, + dormakaba_community_metadata: isset( + $json->dormakaba_community_metadata + ) + ? PhoneSessionDormakabaCommunityMetadata::from_json( + $json->dormakaba_community_metadata + ) + : null, + latch_metadata: isset($json->latch_metadata) + ? PhoneSessionLatchMetadata::from_json($json->latch_metadata) + : null, + salto_ks_metadata: isset($json->salto_ks_metadata) + ? PhoneSessionSaltoKsMetadata::from_json( + $json->salto_ks_metadata + ) + : null, + salto_space_metadata: isset($json->salto_space_metadata) + ? PhoneSessionSaltoSpaceMetadata::from_json( + $json->salto_space_metadata + ) + : null, + visionline_metadata: isset($json->visionline_metadata) + ? PhoneSessionVisionlineMetadata::from_json( + $json->visionline_metadata + ) + : null + ); + } + + public function __construct( + public string $acs_entrance_id, + public string $acs_system_id, + public string $created_at, + public string $display_name, + public array $errors, + public PhoneSessionAssaAbloyVostioMetadata|null $assa_abloy_vostio_metadata, + public PhoneSessionDormakabaCommunityMetadata|null $dormakaba_community_metadata, + public PhoneSessionLatchMetadata|null $latch_metadata, + public PhoneSessionSaltoKsMetadata|null $salto_ks_metadata, + public PhoneSessionSaltoSpaceMetadata|null $salto_space_metadata, + public PhoneSessionVisionlineMetadata|null $visionline_metadata + ) { + } +} diff --git a/src/Objects/PhoneSessionAssaAbloyVostioMetadata.php b/src/Objects/PhoneSessionAssaAbloyVostioMetadata.php new file mode 100644 index 0000000..b9c09cc --- /dev/null +++ b/src/Objects/PhoneSessionAssaAbloyVostioMetadata.php @@ -0,0 +1,30 @@ +door_name, + door_type: $json->door_type, + door_number: $json->door_number ?? null, + pms_id: $json->pms_id ?? null, + stand_open: $json->stand_open ?? null + ); + } + + public function __construct( + public string $door_name, + public string $door_type, + public float|null $door_number, + public string|null $pms_id, + public bool|null $stand_open + ) { + } +} diff --git a/src/Objects/PhoneSessionDormakabaCommunityMetadata.php b/src/Objects/PhoneSessionDormakabaCommunityMetadata.php new file mode 100644 index 0000000..a32e495 --- /dev/null +++ b/src/Objects/PhoneSessionDormakabaCommunityMetadata.php @@ -0,0 +1,19 @@ +access_point_name); + } + + public function __construct(public string $access_point_name) + { + } +} diff --git a/src/Objects/PhoneSessionErrors.php b/src/Objects/PhoneSessionErrors.php new file mode 100644 index 0000000..55e7e47 --- /dev/null +++ b/src/Objects/PhoneSessionErrors.php @@ -0,0 +1,25 @@ +error_code, + message: $json->message, + created_at: $json->created_at ?? null + ); + } + + public function __construct( + public string $error_code, + public string $message, + public string|null $created_at + ) { + } +} diff --git a/src/Objects/PhoneSessionLatchMetadata.php b/src/Objects/PhoneSessionLatchMetadata.php new file mode 100644 index 0000000..1b4b824 --- /dev/null +++ b/src/Objects/PhoneSessionLatchMetadata.php @@ -0,0 +1,28 @@ +accessibility_type, + door_name: $json->door_name, + door_type: $json->door_type, + is_connected: $json->is_connected + ); + } + + public function __construct( + public string $accessibility_type, + public string $door_name, + public string $door_type, + public bool $is_connected + ) { + } +} diff --git a/src/Objects/PhoneSessionPhoneRegistration.php b/src/Objects/PhoneSessionPhoneRegistration.php new file mode 100644 index 0000000..d5aace5 --- /dev/null +++ b/src/Objects/PhoneSessionPhoneRegistration.php @@ -0,0 +1,28 @@ +is_being_activated, + phone_registration_id: $json->phone_registration_id, + provider_state: $json->provider_state ?? null, + provider_name: $json->provider_name ?? null + ); + } + + public function __construct( + public bool $is_being_activated, + public string $phone_registration_id, + public mixed $provider_state, + public string|null $provider_name + ) { + } +} diff --git a/src/Objects/PhoneSessionProfiles.php b/src/Objects/PhoneSessionProfiles.php new file mode 100644 index 0000000..3eea338 --- /dev/null +++ b/src/Objects/PhoneSessionProfiles.php @@ -0,0 +1,23 @@ +visionline_door_profile_id, + visionline_door_profile_type: $json->visionline_door_profile_type + ); + } + + public function __construct( + public string $visionline_door_profile_id, + public string $visionline_door_profile_type + ) { + } +} diff --git a/src/Objects/PhoneSessionProviderSessions.php b/src/Objects/PhoneSessionProviderSessions.php new file mode 100644 index 0000000..8b51349 --- /dev/null +++ b/src/Objects/PhoneSessionProviderSessions.php @@ -0,0 +1,29 @@ + PhoneSessionAcsCredentials::from_json($a), + $json->acs_credentials ?? [] + ), + phone_registration: PhoneSessionPhoneRegistration::from_json( + $json->phone_registration + ) + ); + } + + public function __construct( + public array $acs_credentials, + public PhoneSessionPhoneRegistration $phone_registration + ) { + } +} diff --git a/src/Objects/PhoneSessionSaltoKsMetadata.php b/src/Objects/PhoneSessionSaltoKsMetadata.php new file mode 100644 index 0000000..d554fc0 --- /dev/null +++ b/src/Objects/PhoneSessionSaltoKsMetadata.php @@ -0,0 +1,36 @@ +battery_level, + door_name: $json->door_name, + lock_type: $json->lock_type, + locked_state: $json->locked_state, + intrusion_alarm: $json->intrusion_alarm ?? null, + left_open_alarm: $json->left_open_alarm ?? null, + online: $json->online ?? null, + privacy_mode: $json->privacy_mode ?? null + ); + } + + public function __construct( + public string $battery_level, + public string $door_name, + public string $lock_type, + public string $locked_state, + public bool|null $intrusion_alarm, + public bool|null $left_open_alarm, + public bool|null $online, + public bool|null $privacy_mode + ) { + } +} diff --git a/src/Objects/PhoneSessionSaltoSpaceMetadata.php b/src/Objects/PhoneSessionSaltoSpaceMetadata.php new file mode 100644 index 0000000..ba7de38 --- /dev/null +++ b/src/Objects/PhoneSessionSaltoSpaceMetadata.php @@ -0,0 +1,26 @@ +door_name, + ext_door_id: $json->ext_door_id, + door_description: $json->door_description ?? null + ); + } + + public function __construct( + public string $door_name, + public string $ext_door_id, + public string|null $door_description + ) { + } +} diff --git a/src/Objects/PhoneSessionVisionlineMetadata.php b/src/Objects/PhoneSessionVisionlineMetadata.php new file mode 100644 index 0000000..038c63e --- /dev/null +++ b/src/Objects/PhoneSessionVisionlineMetadata.php @@ -0,0 +1,29 @@ +door_category, + door_name: $json->door_name, + profiles: array_map( + fn($p) => PhoneSessionProfiles::from_json($p), + $json->profiles ?? [] + ) + ); + } + + public function __construct( + public string $door_category, + public string $door_name, + public array|null $profiles + ) { + } +} diff --git a/src/Objects/PhoneSessionWarnings.php b/src/Objects/PhoneSessionWarnings.php new file mode 100644 index 0000000..208d48d --- /dev/null +++ b/src/Objects/PhoneSessionWarnings.php @@ -0,0 +1,25 @@ +created_at, + message: $json->message, + warning_code: $json->warning_code + ); + } + + public function __construct( + public string $created_at, + public string $message, + public string $warning_code + ) { + } +} diff --git a/src/Objects/ThermostatSchedule.php b/src/Objects/ThermostatSchedule.php index 1b87ad8..889a81f 100644 --- a/src/Objects/ThermostatSchedule.php +++ b/src/Objects/ThermostatSchedule.php @@ -20,9 +20,9 @@ public static function from_json(mixed $json): ThermostatSchedule|null ), starts_at: $json->starts_at, thermostat_schedule_id: $json->thermostat_schedule_id, + workspace_id: $json->workspace_id, + is_override_allowed: $json->is_override_allowed ?? null, name: $json->name ?? null, - unstable_is_override_allowed: $json->unstable_is_override_allowed ?? - null, max_override_period_minutes: $json->max_override_period_minutes ?? null ); @@ -36,8 +36,9 @@ public function __construct( public array $errors, public string $starts_at, public string $thermostat_schedule_id, + public string $workspace_id, + public bool|null $is_override_allowed, public string|null $name, - public bool|null $unstable_is_override_allowed, public mixed $max_override_period_minutes ) { } diff --git a/src/Objects/UnmanagedAcsCredentialAssaAbloyVostioMetadata.php b/src/Objects/UnmanagedAcsCredentialAssaAbloyVostioMetadata.php index f8b0136..18c61e3 100644 --- a/src/Objects/UnmanagedAcsCredentialAssaAbloyVostioMetadata.php +++ b/src/Objects/UnmanagedAcsCredentialAssaAbloyVostioMetadata.php @@ -11,6 +11,7 @@ public static function from_json( return null; } return new self( + auto_join: $json->auto_join ?? null, door_names: $json->door_names ?? null, endpoint_id: $json->endpoint_id ?? null, key_id: $json->key_id ?? null, @@ -21,6 +22,7 @@ public static function from_json( } public function __construct( + public bool|null $auto_join, public array|null $door_names, public string|null $endpoint_id, public string|null $key_id, diff --git a/src/Objects/UnmanagedAcsUser.php b/src/Objects/UnmanagedAcsUser.php index ae8cde1..2fb2877 100644 --- a/src/Objects/UnmanagedAcsUser.php +++ b/src/Objects/UnmanagedAcsUser.php @@ -12,6 +12,7 @@ public static function from_json(mixed $json): UnmanagedAcsUser|null return new self( acs_system_id: $json->acs_system_id, acs_user_id: $json->acs_user_id, + connected_account_id: $json->connected_account_id, created_at: $json->created_at, display_name: $json->display_name, errors: array_map( @@ -43,10 +44,7 @@ public static function from_json(mixed $json): UnmanagedAcsUser|null ), phone_number: $json->phone_number ?? null, user_identity_id: $json->user_identity_id ?? null, - is_latest_desired_state_synced_with_provider: $json->is_latest_desired_state_synced_with_provider ?? - null, - latest_desired_state_synced_with_provider_at: $json->latest_desired_state_synced_with_provider_at ?? - null, + last_successful_sync_at: $json->last_successful_sync_at ?? null, user_identity_email_address: $json->user_identity_email_address ?? null, user_identity_full_name: $json->user_identity_full_name ?? null, @@ -58,6 +56,7 @@ public static function from_json(mixed $json): UnmanagedAcsUser|null public function __construct( public string $acs_system_id, public string $acs_user_id, + public string $connected_account_id, public string $created_at, public string $display_name, public array $errors, @@ -75,8 +74,7 @@ public function __construct( public array|null $pending_mutations, public string|null $phone_number, public string|null $user_identity_id, - public bool|null $is_latest_desired_state_synced_with_provider, - public string|null $latest_desired_state_synced_with_provider_at, + public string|null $last_successful_sync_at, public string|null $user_identity_email_address, public string|null $user_identity_full_name, public string|null $user_identity_phone_number diff --git a/src/Objects/Workspace.php b/src/Objects/Workspace.php index a48dc00..cf4c0ec 100644 --- a/src/Objects/Workspace.php +++ b/src/Objects/Workspace.php @@ -11,6 +11,9 @@ public static function from_json(mixed $json): Workspace|null } return new self( company_name: $json->company_name, + connect_webview_customization: WorkspaceConnectWebviewCustomization::from_json( + $json->connect_webview_customization + ), is_sandbox: $json->is_sandbox, is_suspended: $json->is_suspended, name: $json->name, @@ -21,6 +24,7 @@ public static function from_json(mixed $json): Workspace|null public function __construct( public string $company_name, + public WorkspaceConnectWebviewCustomization $connect_webview_customization, public bool $is_sandbox, public bool $is_suspended, public string $name, diff --git a/src/Objects/WorkspaceConnectWebviewCustomization.php b/src/Objects/WorkspaceConnectWebviewCustomization.php new file mode 100644 index 0000000..d5e1571 --- /dev/null +++ b/src/Objects/WorkspaceConnectWebviewCustomization.php @@ -0,0 +1,30 @@ +inviter_logo_url ?? null, + logo_shape: $json->logo_shape ?? null, + primary_button_color: $json->primary_button_color ?? null, + primary_button_text_color: $json->primary_button_text_color ?? null, + success_message: $json->success_message ?? null + ); + } + + public function __construct( + public string|null $inviter_logo_url, + public string|null $logo_shape, + public string|null $primary_button_color, + public string|null $primary_button_text_color, + public string|null $success_message + ) { + } +} diff --git a/src/SeamClient.php b/src/SeamClient.php index 9847684..317b958 100644 --- a/src/SeamClient.php +++ b/src/SeamClient.php @@ -24,6 +24,8 @@ use Seam\Objects\NoiseThreshold; use Seam\Objects\Pagination; use Seam\Objects\Phone; +use Seam\Objects\PhoneRegistration; +use Seam\Objects\PhoneSession; use Seam\Objects\ThermostatSchedule; use Seam\Objects\UnmanagedAccessCode; use Seam\Objects\UnmanagedAcsAccessGroup; @@ -50,7 +52,6 @@ class SeamClient public AccessCodesClient $access_codes; public AcsClient $acs; public ActionAttemptsClient $action_attempts; - public BridgesClient $bridges; public ClientSessionsClient $client_sessions; public ConnectWebviewsClient $connect_webviews; public ConnectedAccountsClient $connected_accounts; @@ -91,7 +92,6 @@ public function __construct( $this->access_codes = new AccessCodesClient($this); $this->acs = new AcsClient($this); $this->action_attempts = new ActionAttemptsClient($this); - $this->bridges = new BridgesClient($this); $this->client_sessions = new ClientSessionsClient($this); $this->connect_webviews = new ConnectWebviewsClient($this); $this->connected_accounts = new ConnectedAccountsClient($this); @@ -437,7 +437,10 @@ public function get( public function list( ?array $access_code_ids = null, ?string $device_id = null, - ?string $user_identifier_key = null + ?float $limit = null, + ?string $page_cursor = null, + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -447,6 +450,12 @@ public function list( if ($device_id !== null) { $request_payload["device_id"] = $device_id; } + if ($limit !== null) { + $request_payload["limit"] = $limit; + } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($user_identifier_key !== null) { $request_payload["user_identifier_key"] = $user_identifier_key; } @@ -457,6 +466,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map( fn($r) => AccessCode::from_json($r), $res->access_codes @@ -480,6 +493,36 @@ public function pull_backup_access_code(string $access_code_id): AccessCode return AccessCode::from_json($res->access_code); } + public function report_device_constraints( + string $device_id, + mixed $max_code_length = null, + mixed $min_code_length = null, + ?array $supported_code_lengths = null + ): void { + $request_payload = []; + + if ($device_id !== null) { + $request_payload["device_id"] = $device_id; + } + if ($max_code_length !== null) { + $request_payload["max_code_length"] = $max_code_length; + } + if ($min_code_length !== null) { + $request_payload["min_code_length"] = $min_code_length; + } + if ($supported_code_lengths !== null) { + $request_payload[ + "supported_code_lengths" + ] = $supported_code_lengths; + } + + $this->seam->request( + "POST", + "/access_codes/report_device_constraints", + json: (object) $request_payload + ); + } + public function update( string $access_code_id, ?bool $allow_external_modification = null, @@ -809,7 +852,8 @@ public function __construct(SeamClient $seam) public function add_user( string $acs_access_group_id, - string $acs_user_id + ?string $acs_user_id = null, + ?string $user_identity_id = null ): void { $request_payload = []; @@ -819,6 +863,9 @@ public function add_user( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -846,7 +893,8 @@ public function get(string $acs_access_group_id): AcsAccessGroup public function list( ?string $acs_system_id = null, - ?string $acs_user_id = null + ?string $acs_user_id = null, + ?string $user_identity_id = null ): array { $request_payload = []; @@ -856,6 +904,9 @@ public function list( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $res = $this->seam->request( "POST", @@ -909,7 +960,8 @@ public function list_users(string $acs_access_group_id): array public function remove_user( string $acs_access_group_id, - string $acs_user_id + ?string $acs_user_id = null, + ?string $user_identity_id = null ): void { $request_payload = []; @@ -919,6 +971,9 @@ public function remove_user( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -958,8 +1013,11 @@ public function __construct(SeamClient $seam) $this->seam = $seam; } - public function assign(string $acs_credential_id, string $acs_user_id): void - { + public function assign( + string $acs_credential_id, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): void { $request_payload = []; if ($acs_credential_id !== null) { @@ -968,6 +1026,9 @@ public function assign(string $acs_credential_id, string $acs_user_id): void if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -978,7 +1039,8 @@ public function assign(string $acs_credential_id, string $acs_user_id): void public function create( string $access_method, - string $acs_user_id, + ?string $acs_system_id = null, + ?string $acs_user_id = null, ?array $allowed_acs_entrance_ids = null, mixed $assa_abloy_vostio_metadata = null, ?string $code = null, @@ -987,6 +1049,7 @@ public function create( ?bool $is_multi_phone_sync_credential = null, mixed $salto_space_metadata = null, ?string $starts_at = null, + ?string $user_identity_id = null, mixed $visionline_metadata = null ): AcsCredential { $request_payload = []; @@ -994,6 +1057,9 @@ public function create( if ($access_method !== null) { $request_payload["access_method"] = $access_method; } + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } @@ -1029,6 +1095,9 @@ public function create( if ($starts_at !== null) { $request_payload["starts_at"] = $starts_at; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } if ($visionline_metadata !== null) { $request_payload["visionline_metadata"] = $visionline_metadata; } @@ -1139,7 +1208,8 @@ public function list_accessible_entrances(string $acs_credential_id): array public function unassign( string $acs_credential_id, - string $acs_user_id + ?string $acs_user_id = null, + ?string $user_identity_id = null ): void { $request_payload = []; @@ -1149,6 +1219,9 @@ public function unassign( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1191,6 +1264,37 @@ public function __construct(SeamClient $seam) $this->seam = $seam; } + public function encode_access_method( + string $access_method_id, + string $acs_encoder_id, + bool $wait_for_action_attempt = true + ): ActionAttempt { + $request_payload = []; + + if ($access_method_id !== null) { + $request_payload["access_method_id"] = $access_method_id; + } + if ($acs_encoder_id !== null) { + $request_payload["acs_encoder_id"] = $acs_encoder_id; + } + + $res = $this->seam->request( + "POST", + "/acs/encoders/encode_access_method", + json: (object) $request_payload + ); + + if (!$wait_for_action_attempt) { + return ActionAttempt::from_json($res->action_attempt); + } + + $action_attempt = $this->seam->action_attempts->poll_until_ready( + $res->action_attempt->action_attempt_id + ); + + return $action_attempt; + } + public function encode_credential( string $acs_credential_id, string $acs_encoder_id, @@ -1434,7 +1538,8 @@ public function get(string $acs_entrance_id): AcsEntrance public function grant_access( string $acs_entrance_id, - string $acs_user_id + ?string $acs_user_id = null, + ?string $user_identity_id = null ): void { $request_payload = []; @@ -1444,6 +1549,9 @@ public function grant_access( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1454,7 +1562,8 @@ public function grant_access( public function list( ?string $acs_credential_id = null, - ?string $acs_system_id = null + ?string $acs_system_id = null, + ?string $location_id = null ): array { $request_payload = []; @@ -1464,6 +1573,9 @@ public function list( if ($acs_system_id !== null) { $request_payload["acs_system_id"] = $acs_system_id; } + if ($location_id !== null) { + $request_payload["location_id"] = $location_id; + } $res = $this->seam->request( "POST", @@ -1640,13 +1752,22 @@ public function create( return AcsUser::from_json($res->acs_user); } - public function delete(string $acs_user_id): void - { + public function delete( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): void { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1655,13 +1776,22 @@ public function delete(string $acs_user_id): void ); } - public function get(string $acs_user_id): AcsUser - { + public function get( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): AcsUser { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $res = $this->seam->request( "POST", @@ -1727,13 +1857,22 @@ public function list( return array_map(fn($r) => AcsUser::from_json($r), $res->acs_users); } - public function list_accessible_entrances(string $acs_user_id): array - { + public function list_accessible_entrances( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): array { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $res = $this->seam->request( "POST", @@ -1749,7 +1888,8 @@ public function list_accessible_entrances(string $acs_user_id): array public function remove_from_access_group( string $acs_access_group_id, - string $acs_user_id + ?string $acs_user_id = null, + ?string $user_identity_id = null ): void { $request_payload = []; @@ -1759,6 +1899,9 @@ public function remove_from_access_group( if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1767,13 +1910,22 @@ public function remove_from_access_group( ); } - public function revoke_access_to_all_entrances(string $acs_user_id): void - { + public function revoke_access_to_all_entrances( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): void { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1782,13 +1934,22 @@ public function revoke_access_to_all_entrances(string $acs_user_id): void ); } - public function suspend(string $acs_user_id): void - { + public function suspend( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): void { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1797,13 +1958,22 @@ public function suspend(string $acs_user_id): void ); } - public function unsuspend(string $acs_user_id): void - { + public function unsuspend( + ?string $acs_system_id = null, + ?string $acs_user_id = null, + ?string $user_identity_id = null + ): void { $request_payload = []; + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } if ($acs_user_id !== null) { $request_payload["acs_user_id"] = $acs_user_id; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1813,22 +1983,27 @@ public function unsuspend(string $acs_user_id): void } public function update( - string $acs_user_id, mixed $access_schedule = null, + ?string $acs_system_id = null, + ?string $acs_user_id = null, ?string $email = null, ?string $email_address = null, ?string $full_name = null, ?string $hid_acs_system_id = null, - ?string $phone_number = null + ?string $phone_number = null, + ?string $user_identity_id = null ): void { $request_payload = []; - if ($acs_user_id !== null) { - $request_payload["acs_user_id"] = $acs_user_id; - } if ($access_schedule !== null) { $request_payload["access_schedule"] = $access_schedule; } + if ($acs_system_id !== null) { + $request_payload["acs_system_id"] = $acs_system_id; + } + if ($acs_user_id !== null) { + $request_payload["acs_user_id"] = $acs_user_id; + } if ($email !== null) { $request_payload["email"] = $email; } @@ -1844,6 +2019,9 @@ public function update( if ($phone_number !== null) { $request_payload["phone_number"] = $phone_number; } + if ($user_identity_id !== null) { + $request_payload["user_identity_id"] = $user_identity_id; + } $this->seam->request( "POST", @@ -1926,36 +2104,6 @@ public function poll_until_ready( } } -class BridgesClient -{ - private SeamClient $seam; - - public function __construct(SeamClient $seam) - { - $this->seam = $seam; - } - - public function get(string $bridge_id): void - { - $request_payload = []; - - if ($bridge_id !== null) { - $request_payload["bridge_id"] = $bridge_id; - } - - $this->seam->request( - "POST", - "/bridges/get", - json: (object) $request_payload - ); - } - - public function list(): void - { - $this->seam->request("POST", "/bridges/list"); - } -} - class ClientSessionsClient { private SeamClient $seam; @@ -2333,6 +2481,7 @@ public function get( public function list( mixed $custom_metadata_has = null, + ?array $customer_ids = null, mixed $limit = null, ?string $page_cursor = null, ?string $user_identifier_key = null, @@ -2343,6 +2492,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($limit !== null) { $request_payload["limit"] = $limit; } @@ -2434,6 +2586,7 @@ public function list( ?array $connected_account_ids = null, ?string $created_before = null, mixed $custom_metadata_has = null, + ?array $customer_ids = null, ?array $device_ids = null, ?string $device_type = null, ?array $device_types = null, @@ -2441,8 +2594,10 @@ public function list( ?array $include_if = null, ?float $limit = null, ?string $manufacturer = null, + ?string $page_cursor = null, ?string $unstable_location_id = null, - ?string $user_identifier_key = null + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -2461,6 +2616,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_ids !== null) { $request_payload["device_ids"] = $device_ids; } @@ -2482,6 +2640,9 @@ public function list( if ($manufacturer !== null) { $request_payload["manufacturer"] = $manufacturer; } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($unstable_location_id !== null) { $request_payload["unstable_location_id"] = $unstable_location_id; } @@ -2495,6 +2656,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map(fn($r) => Device::from_json($r), $res->devices); } @@ -2644,6 +2809,7 @@ public function list( ?array $connected_account_ids = null, ?string $created_before = null, mixed $custom_metadata_has = null, + ?array $customer_ids = null, ?array $device_ids = null, ?string $device_type = null, ?array $device_types = null, @@ -2651,8 +2817,10 @@ public function list( ?array $include_if = null, ?float $limit = null, ?string $manufacturer = null, + ?string $page_cursor = null, ?string $unstable_location_id = null, - ?string $user_identifier_key = null + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -2671,6 +2839,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_ids !== null) { $request_payload["device_ids"] = $device_ids; } @@ -2692,6 +2863,9 @@ public function list( if ($manufacturer !== null) { $request_payload["manufacturer"] = $manufacturer; } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($unstable_location_id !== null) { $request_payload["unstable_location_id"] = $unstable_location_id; } @@ -2705,6 +2879,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map( fn($r) => UnmanagedDevice::from_json($r), $res->devices @@ -2773,6 +2951,7 @@ public function list( ?array $between = null, ?string $connect_webview_id = null, ?string $connected_account_id = null, + ?array $customer_ids = null, ?string $device_id = null, ?array $device_ids = null, ?array $event_ids = null, @@ -2805,6 +2984,9 @@ public function list( if ($connected_account_id !== null) { $request_payload["connected_account_id"] = $connected_account_id; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_id !== null) { $request_payload["device_id"] = $device_id; } @@ -2875,6 +3057,7 @@ public function list( ?array $connected_account_ids = null, ?string $created_before = null, mixed $custom_metadata_has = null, + ?array $customer_ids = null, ?array $device_ids = null, ?string $device_type = null, ?array $device_types = null, @@ -2882,8 +3065,10 @@ public function list( ?array $include_if = null, ?float $limit = null, ?string $manufacturer = null, + ?string $page_cursor = null, ?string $unstable_location_id = null, - ?string $user_identifier_key = null + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -2902,6 +3087,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_ids !== null) { $request_payload["device_ids"] = $device_ids; } @@ -2923,6 +3111,9 @@ public function list( if ($manufacturer !== null) { $request_payload["manufacturer"] = $manufacturer; } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($unstable_location_id !== null) { $request_payload["unstable_location_id"] = $unstable_location_id; } @@ -2936,6 +3127,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map(fn($r) => Device::from_json($r), $res->devices); } @@ -3054,6 +3249,7 @@ public function list( ?array $connected_account_ids = null, ?string $created_before = null, mixed $custom_metadata_has = null, + ?array $customer_ids = null, ?array $device_ids = null, ?string $device_type = null, ?array $device_types = null, @@ -3061,8 +3257,10 @@ public function list( ?array $include_if = null, ?float $limit = null, ?string $manufacturer = null, + ?string $page_cursor = null, ?string $unstable_location_id = null, - ?string $user_identifier_key = null + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -3081,6 +3279,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_ids !== null) { $request_payload["device_ids"] = $device_ids; } @@ -3102,6 +3303,9 @@ public function list( if ($manufacturer !== null) { $request_payload["manufacturer"] = $manufacturer; } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($unstable_location_id !== null) { $request_payload["unstable_location_id"] = $unstable_location_id; } @@ -3115,6 +3319,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map(fn($r) => Device::from_json($r), $res->devices); } } @@ -3420,11 +3628,13 @@ public function create_sandbox_phone( class ThermostatsClient { private SeamClient $seam; + public ThermostatsDailyProgramsClient $daily_programs; public ThermostatsSchedulesClient $schedules; public ThermostatsSimulateClient $simulate; public function __construct(SeamClient $seam) { $this->seam = $seam; + $this->daily_programs = new ThermostatsDailyProgramsClient($seam); $this->schedules = new ThermostatsSchedulesClient($seam); $this->simulate = new ThermostatsSimulateClient($seam); } @@ -3689,6 +3899,7 @@ public function list( ?array $connected_account_ids = null, ?string $created_before = null, mixed $custom_metadata_has = null, + ?array $customer_ids = null, ?array $device_ids = null, ?string $device_type = null, ?array $device_types = null, @@ -3696,8 +3907,10 @@ public function list( ?array $include_if = null, ?float $limit = null, ?string $manufacturer = null, + ?string $page_cursor = null, ?string $unstable_location_id = null, - ?string $user_identifier_key = null + ?string $user_identifier_key = null, + ?callable $on_response = null ): array { $request_payload = []; @@ -3716,6 +3929,9 @@ public function list( if ($custom_metadata_has !== null) { $request_payload["custom_metadata_has"] = $custom_metadata_has; } + if ($customer_ids !== null) { + $request_payload["customer_ids"] = $customer_ids; + } if ($device_ids !== null) { $request_payload["device_ids"] = $device_ids; } @@ -3737,6 +3953,9 @@ public function list( if ($manufacturer !== null) { $request_payload["manufacturer"] = $manufacturer; } + if ($page_cursor !== null) { + $request_payload["page_cursor"] = $page_cursor; + } if ($unstable_location_id !== null) { $request_payload["unstable_location_id"] = $unstable_location_id; } @@ -3750,6 +3969,10 @@ public function list( json: (object) $request_payload ); + if ($on_response !== null) { + $on_response($res); + } + return array_map(fn($r) => Device::from_json($r), $res->devices); } @@ -3995,6 +4218,149 @@ public function update_climate_preset( json: (object) $request_payload ); } + + public function update_weekly_program( + string $device_id, + ?string $friday_program_id = null, + ?string $monday_program_id = null, + ?string $saturday_program_id = null, + ?string $sunday_program_id = null, + ?string $thursday_program_id = null, + ?string $tuesday_program_id = null, + ?string $wednesday_program_id = null, + bool $wait_for_action_attempt = true + ): ActionAttempt { + $request_payload = []; + + if ($device_id !== null) { + $request_payload["device_id"] = $device_id; + } + if ($friday_program_id !== null) { + $request_payload["friday_program_id"] = $friday_program_id; + } + if ($monday_program_id !== null) { + $request_payload["monday_program_id"] = $monday_program_id; + } + if ($saturday_program_id !== null) { + $request_payload["saturday_program_id"] = $saturday_program_id; + } + if ($sunday_program_id !== null) { + $request_payload["sunday_program_id"] = $sunday_program_id; + } + if ($thursday_program_id !== null) { + $request_payload["thursday_program_id"] = $thursday_program_id; + } + if ($tuesday_program_id !== null) { + $request_payload["tuesday_program_id"] = $tuesday_program_id; + } + if ($wednesday_program_id !== null) { + $request_payload["wednesday_program_id"] = $wednesday_program_id; + } + + $res = $this->seam->request( + "POST", + "/thermostats/update_weekly_program", + json: (object) $request_payload + ); + + if (!$wait_for_action_attempt) { + return ActionAttempt::from_json($res->action_attempt); + } + + $action_attempt = $this->seam->action_attempts->poll_until_ready( + $res->action_attempt->action_attempt_id + ); + + return $action_attempt; + } +} + +class ThermostatsDailyProgramsClient +{ + private SeamClient $seam; + + public function __construct(SeamClient $seam) + { + $this->seam = $seam; + } + + public function create( + string $device_id, + string $name, + array $periods + ): void { + $request_payload = []; + + if ($device_id !== null) { + $request_payload["device_id"] = $device_id; + } + if ($name !== null) { + $request_payload["name"] = $name; + } + if ($periods !== null) { + $request_payload["periods"] = $periods; + } + + $this->seam->request( + "POST", + "/thermostats/daily_programs/create", + json: (object) $request_payload + ); + } + + public function delete(string $thermostat_daily_program_id): void + { + $request_payload = []; + + if ($thermostat_daily_program_id !== null) { + $request_payload[ + "thermostat_daily_program_id" + ] = $thermostat_daily_program_id; + } + + $this->seam->request( + "POST", + "/thermostats/daily_programs/delete", + json: (object) $request_payload + ); + } + + public function update( + string $name, + array $periods, + string $thermostat_daily_program_id, + bool $wait_for_action_attempt = true + ): ActionAttempt { + $request_payload = []; + + if ($name !== null) { + $request_payload["name"] = $name; + } + if ($periods !== null) { + $request_payload["periods"] = $periods; + } + if ($thermostat_daily_program_id !== null) { + $request_payload[ + "thermostat_daily_program_id" + ] = $thermostat_daily_program_id; + } + + $res = $this->seam->request( + "POST", + "/thermostats/daily_programs/update", + json: (object) $request_payload + ); + + if (!$wait_for_action_attempt) { + return ActionAttempt::from_json($res->action_attempt); + } + + $action_attempt = $this->seam->action_attempts->poll_until_ready( + $res->action_attempt->action_attempt_id + ); + + return $action_attempt; + } } class ThermostatsSchedulesClient @@ -4269,6 +4635,7 @@ public function add_acs_user( } public function create( + ?array $acs_system_ids = null, ?string $email_address = null, ?string $full_name = null, ?string $phone_number = null, @@ -4276,6 +4643,9 @@ public function create( ): UserIdentity { $request_payload = []; + if ($acs_system_ids !== null) { + $request_payload["acs_system_ids"] = $acs_system_ids; + } if ($email_address !== null) { $request_payload["email_address"] = $email_address; } @@ -4313,13 +4683,18 @@ public function delete(string $user_identity_id): void ); } - public function generate_instant_key(string $user_identity_id): InstantKey - { + public function generate_instant_key( + string $user_identity_id, + ?float $max_use_count = null + ): InstantKey { $request_payload = []; if ($user_identity_id !== null) { $request_payload["user_identity_id"] = $user_identity_id; } + if ($max_use_count !== null) { + $request_payload["max_use_count"] = $max_use_count; + } $res = $this->seam->request( "POST", @@ -4725,6 +5100,7 @@ public function create( string $name, ?string $company_name = null, ?string $connect_partner_name = null, + mixed $connect_webview_customization = null, ?bool $is_sandbox = null, ?string $webview_logo_shape = null, ?string $webview_primary_button_color = null, @@ -4742,6 +5118,11 @@ public function create( if ($connect_partner_name !== null) { $request_payload["connect_partner_name"] = $connect_partner_name; } + if ($connect_webview_customization !== null) { + $request_payload[ + "connect_webview_customization" + ] = $connect_webview_customization; + } if ($is_sandbox !== null) { $request_payload["is_sandbox"] = $is_sandbox; } From 1cb677f1b808ac9f7f1c06742816b89759ba976e Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Thu, 29 May 2025 15:12:52 -0700 Subject: [PATCH 3/3] Update nextlove-sdk-generator --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e10726b..29132a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "devDependencies": { "@prettier/plugin-php": "^0.22.1", - "@seamapi/nextlove-sdk-generator": "1.18.1", + "@seamapi/nextlove-sdk-generator": "^1.18.1", "@seamapi/types": "1.405.0", "del": "^7.1.0", "prettier": "^3.0.0" diff --git a/package.json b/package.json index f67a1cb..20d7cc2 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@prettier/plugin-php": "^0.22.1", - "@seamapi/nextlove-sdk-generator": "1.18.1", + "@seamapi/nextlove-sdk-generator": "^1.18.1", "@seamapi/types": "1.405.0", "del": "^7.1.0", "prettier": "^3.0.0"