diff --git a/package-lock.json b/package-lock.json index 306c4c5f..e0a3dbf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,9 +6,9 @@ "": { "name": "@seamapi/python", "devDependencies": { - "@seamapi/fake-seam-connect": "1.73.5", + "@seamapi/fake-seam-connect": "1.73.6", "@seamapi/nextlove-sdk-generator": "1.14.17", - "@seamapi/types": "1.311.0", + "@seamapi/types": "1.313.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -434,9 +434,9 @@ } }, "node_modules/@seamapi/fake-seam-connect": { - "version": "1.73.5", - "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.73.5.tgz", - "integrity": "sha512-d4Zpviao8LpQyRt0SjeZW77HPPsEkLp9tEyYNVEeYdfOTVMk5lLGuQ88mX9Qht6Xff05mJbPlbgyJsV9wKPqlw==", + "version": "1.73.6", + "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.73.6.tgz", + "integrity": "sha512-N03XWVf91J73AIHgRryz4EF16liRRqGIJR4ZW8KUulW9ku0BFDZ43Hg1pNqk+sJ6jknU9HjlN0cfU4YryUQk2A==", "dev": true, "bin": { "fake-seam-connect": "dist/server.js" @@ -474,11 +474,10 @@ } }, "node_modules/@seamapi/types": { - "version": "1.311.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.311.0.tgz", - "integrity": "sha512-qFLJ1t0XN27UCXA0ue5PcZMUinvB6hkUsvKtmKygDzK4q4eVbSB5jNQAAJRvs43gEnMi3XtuNSJRnZLN0j7EPQ==", + "version": "1.313.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.313.0.tgz", + "integrity": "sha512-uk/fRmMvtAgTjZwRLmjvfxIkS6+BR1V5b9M6oA5+5Q3y9iTK2e/57fRat5qsyb+R00rmlb8Lh/rqs7W0nHu2IA==", "dev": true, - "license": "MIT", "engines": { "node": ">=18.12.0", "npm": ">= 9.0.0" diff --git a/package.json b/package.json index 054ca8bf..fbe073df 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,9 @@ "start": "fake-seam-connect --seed" }, "devDependencies": { - "@seamapi/fake-seam-connect": "1.73.5", + "@seamapi/fake-seam-connect": "1.73.6", "@seamapi/nextlove-sdk-generator": "1.14.17", - "@seamapi/types": "1.311.0", + "@seamapi/types": "1.313.0", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/acs_encoders.py b/seam/routes/acs_encoders.py index 78a94263..5b71a094 100644 --- a/seam/routes/acs_encoders.py +++ b/seam/routes/acs_encoders.py @@ -65,15 +65,12 @@ def scan_credential( self, *, acs_encoder_id: str, - acs_system_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: json_payload = {} if acs_encoder_id is not None: json_payload["acs_encoder_id"] = acs_encoder_id - if acs_system_id is not None: - json_payload["acs_system_id"] = acs_system_id res = self.client.post("/acs/encoders/scan_credential", json=json_payload) diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index 051c3532..421de44d 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -26,11 +26,11 @@ def create( self, *, acs_system_id: str, + full_name: str, access_schedule: Optional[Dict[str, Any]] = None, acs_access_group_ids: Optional[List[str]] = None, email: Optional[str] = None, email_address: Optional[str] = None, - full_name: Optional[str] = None, phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: @@ -38,6 +38,8 @@ def create( if acs_system_id is not None: json_payload["acs_system_id"] = acs_system_id + if full_name is not None: + json_payload["full_name"] = full_name if access_schedule is not None: json_payload["access_schedule"] = access_schedule if acs_access_group_ids is not None: @@ -46,8 +48,6 @@ def create( json_payload["email"] = email if email_address is not None: json_payload["email_address"] = email_address - if full_name is not None: - json_payload["full_name"] = full_name if phone_number is not None: json_payload["phone_number"] = phone_number if user_identity_id is not None: diff --git a/seam/routes/models.py b/seam/routes/models.py index 9e2d3df5..96ee8d2f 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -612,56 +612,100 @@ def from_dict(d: Dict[str, Any]): @dataclass class SeamEvent: - acs_credential_id: str + access_code_id: str + connected_account_id: str + created_at: str + device_id: str + event_id: str + event_type: str + occurred_at: str + workspace_id: str + code: str + backup_access_code_id: str acs_system_id: str + acs_credential_id: str acs_user_id: str - action_attempt_id: str + acs_encoder_id: str client_session_id: str + connect_webview_id: str + action_attempt_id: str + action_type: str + status: str + error_code: str + battery_level: float + battery_status: str + minut_metadata: Dict[str, Any] + noise_level_decibels: float + noise_level_nrs: float + noise_threshold_id: str + noise_threshold_name: str + noiseaware_metadata: Dict[str, Any] + method: str climate_preset_key: str + is_fallback_climate_preset: bool + thermostat_schedule_id: str cooling_set_point_celsius: float cooling_set_point_fahrenheit: float - created_at: str - device_id: str - enrollment_automation_id: str - event_description: str - event_id: str - event_type: str fan_mode_setting: str heating_set_point_celsius: float heating_set_point_fahrenheit: float hvac_mode_setting: str - is_fallback_climate_preset: bool - method: str - occurred_at: str - thermostat_schedule_id: str - workspace_id: str + lower_limit_celsius: float + lower_limit_fahrenheit: float + temperature_celsius: float + temperature_fahrenheit: float + upper_limit_celsius: float + upper_limit_fahrenheit: float + enrollment_automation_id: str @staticmethod def from_dict(d: Dict[str, Any]): return SeamEvent( - acs_credential_id=d.get("acs_credential_id", None), + access_code_id=d.get("access_code_id", None), + connected_account_id=d.get("connected_account_id", None), + created_at=d.get("created_at", None), + device_id=d.get("device_id", None), + event_id=d.get("event_id", None), + event_type=d.get("event_type", None), + occurred_at=d.get("occurred_at", None), + workspace_id=d.get("workspace_id", None), + code=d.get("code", None), + backup_access_code_id=d.get("backup_access_code_id", None), acs_system_id=d.get("acs_system_id", None), + acs_credential_id=d.get("acs_credential_id", None), acs_user_id=d.get("acs_user_id", None), - action_attempt_id=d.get("action_attempt_id", None), + acs_encoder_id=d.get("acs_encoder_id", None), client_session_id=d.get("client_session_id", None), + connect_webview_id=d.get("connect_webview_id", None), + action_attempt_id=d.get("action_attempt_id", None), + action_type=d.get("action_type", None), + status=d.get("status", None), + error_code=d.get("error_code", None), + battery_level=d.get("battery_level", None), + battery_status=d.get("battery_status", None), + minut_metadata=DeepAttrDict(d.get("minut_metadata", None)), + noise_level_decibels=d.get("noise_level_decibels", None), + noise_level_nrs=d.get("noise_level_nrs", None), + noise_threshold_id=d.get("noise_threshold_id", None), + noise_threshold_name=d.get("noise_threshold_name", None), + noiseaware_metadata=DeepAttrDict(d.get("noiseaware_metadata", None)), + method=d.get("method", None), climate_preset_key=d.get("climate_preset_key", None), + is_fallback_climate_preset=d.get("is_fallback_climate_preset", None), + thermostat_schedule_id=d.get("thermostat_schedule_id", None), cooling_set_point_celsius=d.get("cooling_set_point_celsius", None), cooling_set_point_fahrenheit=d.get("cooling_set_point_fahrenheit", None), - created_at=d.get("created_at", None), - device_id=d.get("device_id", None), - enrollment_automation_id=d.get("enrollment_automation_id", None), - event_description=d.get("event_description", None), - event_id=d.get("event_id", None), - event_type=d.get("event_type", None), fan_mode_setting=d.get("fan_mode_setting", None), heating_set_point_celsius=d.get("heating_set_point_celsius", None), heating_set_point_fahrenheit=d.get("heating_set_point_fahrenheit", None), hvac_mode_setting=d.get("hvac_mode_setting", None), - is_fallback_climate_preset=d.get("is_fallback_climate_preset", None), - method=d.get("method", None), - occurred_at=d.get("occurred_at", None), - thermostat_schedule_id=d.get("thermostat_schedule_id", None), - workspace_id=d.get("workspace_id", None), + lower_limit_celsius=d.get("lower_limit_celsius", None), + lower_limit_fahrenheit=d.get("lower_limit_fahrenheit", None), + temperature_celsius=d.get("temperature_celsius", None), + temperature_fahrenheit=d.get("temperature_fahrenheit", None), + upper_limit_celsius=d.get("upper_limit_celsius", None), + upper_limit_fahrenheit=d.get("upper_limit_fahrenheit", None), + enrollment_automation_id=d.get("enrollment_automation_id", None), ) @@ -1203,7 +1247,6 @@ def scan_credential( self, *, acs_encoder_id: str, - acs_system_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: raise NotImplementedError() @@ -1265,11 +1308,11 @@ def create( self, *, acs_system_id: str, + full_name: str, access_schedule: Optional[Dict[str, Any]] = None, acs_access_group_ids: Optional[List[str]] = None, email: Optional[str] = None, email_address: Optional[str] = None, - full_name: Optional[str] = None, phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: