diff --git a/package-lock.json b/package-lock.json index 1daccfc..b6deefd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,8 +7,8 @@ "name": "@seamapi/python", "devDependencies": { "@seamapi/fake-seam-connect": "1.71.0", - "@seamapi/nextlove-sdk-generator": "1.13.5", - "@seamapi/types": "1.208.0", + "@seamapi/nextlove-sdk-generator": "1.14.0", + "@seamapi/types": "1.209.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -453,9 +453,9 @@ } }, "node_modules/@seamapi/nextlove-sdk-generator": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.13.5.tgz", - "integrity": "sha512-aLaCzqtDE9pao+dKhiQF+Fo9szua3u525JBPKJASke/BKIUsnC7iBq/fa64ZST864IgMOh1TGtY42PTt/a0EuQ==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.14.0.tgz", + "integrity": "sha512-2DPxl3K+JDKfoewRt7BUsDhckJg3a8ATK3r459xio2S4+7/qAITbt5GbFlYkHFkjwNfKxtfbaXE183XT8wJFJQ==", "dev": true, "dependencies": { "@nodelib/fs.walk": "^2.0.0", @@ -474,9 +474,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.208.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.208.0.tgz", - "integrity": "sha512-VuA8974b24yfiFzoNraOimvQOnIYvt56zMheG648ZSPaDhV+GX5/SWISmcqdedppdcvNgF2HmlZHNsvgOU2WMA==", + "version": "1.209.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.209.0.tgz", + "integrity": "sha512-qUKOOJe5Vxbx++w9i31oVO8WJfd7QBzPu2mKQMpvjG52OIGnIEpN7tdO3//Y8x6yeau8KUde0W3JJpNgguX19w==", "dev": true, "engines": { "node": ">=18.12.0", diff --git a/package.json b/package.json index 466d10a..fa1058e 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ }, "devDependencies": { "@seamapi/fake-seam-connect": "1.71.0", - "@seamapi/nextlove-sdk-generator": "1.13.5", - "@seamapi/types": "1.208.0", + "@seamapi/nextlove-sdk-generator": "1.14.0", + "@seamapi/types": "1.209.0", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/models.py b/seam/routes/models.py index 2a61bff..e556625 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -2066,6 +2066,26 @@ def noise_thresholds(self) -> AbstractNoiseSensorsNoiseThresholds: def simulate(self) -> AbstractNoiseSensorsSimulate: raise NotImplementedError() + @abc.abstractmethod + def list( + self, + *, + connect_webview_id: Optional[str] = None, + connected_account_id: Optional[str] = None, + connected_account_ids: Optional[List[str]] = None, + created_before: Optional[str] = None, + custom_metadata_has: Optional[Dict[str, Any]] = None, + device_ids: Optional[List[str]] = None, + device_type: Optional[str] = None, + device_types: Optional[List[str]] = None, + exclude_if: Optional[List[str]] = None, + include_if: Optional[List[str]] = None, + limit: Optional[float] = None, + manufacturer: Optional[str] = None, + user_identifier_key: Optional[str] = None + ) -> List[Device]: + raise NotImplementedError() + class AbstractAcs(abc.ABC): diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index e47940a..b163194 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -1,6 +1,6 @@ from typing import Optional, Any, List, Dict, Union from ..client import SeamHttpClient -from .models import AbstractNoiseSensors +from .models import AbstractNoiseSensors, Device from .noise_sensors_noise_thresholds import NoiseSensorsNoiseThresholds from .noise_sensors_simulate import NoiseSensorsSimulate @@ -21,3 +21,53 @@ def noise_thresholds(self) -> NoiseSensorsNoiseThresholds: @property def simulate(self) -> NoiseSensorsSimulate: return self._simulate + + def list( + self, + *, + connect_webview_id: Optional[str] = None, + connected_account_id: Optional[str] = None, + connected_account_ids: Optional[List[str]] = None, + created_before: Optional[str] = None, + custom_metadata_has: Optional[Dict[str, Any]] = None, + device_ids: Optional[List[str]] = None, + device_type: Optional[str] = None, + device_types: Optional[List[str]] = None, + exclude_if: Optional[List[str]] = None, + include_if: Optional[List[str]] = None, + limit: Optional[float] = None, + manufacturer: Optional[str] = None, + user_identifier_key: Optional[str] = None + ) -> List[Device]: + json_payload = {} + + if connect_webview_id is not None: + json_payload["connect_webview_id"] = connect_webview_id + if connected_account_id is not None: + json_payload["connected_account_id"] = connected_account_id + if connected_account_ids is not None: + json_payload["connected_account_ids"] = connected_account_ids + if created_before is not None: + json_payload["created_before"] = created_before + if custom_metadata_has is not None: + json_payload["custom_metadata_has"] = custom_metadata_has + if device_ids is not None: + json_payload["device_ids"] = device_ids + if device_type is not None: + json_payload["device_type"] = device_type + if device_types is not None: + json_payload["device_types"] = device_types + if exclude_if is not None: + json_payload["exclude_if"] = exclude_if + if include_if is not None: + json_payload["include_if"] = include_if + if limit is not None: + json_payload["limit"] = limit + if manufacturer is not None: + json_payload["manufacturer"] = manufacturer + if user_identifier_key is not None: + json_payload["user_identifier_key"] = user_identifier_key + + res = self.client.post("/noise_sensors/list", json=json_payload) + + return [Device.from_dict(item) for item in res["devices"]]