From e21ba0391736e0069dc211b0a9e17726191d773c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 09:13:49 +0000 Subject: [PATCH 1/4] feat(deps-dev): bump @seamapi/types in the seam group Bumps the seam group with 1 update: [@seamapi/types](https://github.com/seamapi/types). Updates `@seamapi/types` from 1.587.0 to 1.591.0 - [Release notes](https://github.com/seamapi/types/releases) - [Changelog](https://github.com/seamapi/types/blob/main/.releaserc.json) - [Commits](https://github.com/seamapi/types/compare/v1.587.0...v1.591.0) --- updated-dependencies: - dependency-name: "@seamapi/types" dependency-version: 1.591.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: seam ... Signed-off-by: dependabot[bot] --- 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 2d25441..ed54f3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.85.1", "@seamapi/nextlove-sdk-generator": "^1.19.1", - "@seamapi/types": "1.587.0", + "@seamapi/types": "1.591.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -475,9 +475,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.587.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.587.0.tgz", - "integrity": "sha512-5p5KOjoUUZVdwP0XDS0BYzeR3PU8Hiw6yQwkSaIoYfPhkZWqWiac9DjAmJysKqSOefECPUk/0BT8rpMenJ8puQ==", + "version": "1.591.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.591.0.tgz", + "integrity": "sha512-9r1414GHNbTX85XpEl9tvbiPDvw/TDghWMJk5TSz0CXkwafhOpvY08Wfl16KAPHdN5qVClDlLO9eG4ZS8z8BUQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 3a8d0b7..988cacd 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.85.1", "@seamapi/nextlove-sdk-generator": "^1.19.1", - "@seamapi/types": "1.587.0", + "@seamapi/types": "1.591.0", "del": "^7.1.0", "prettier": "^3.2.5" } From 2aa847b39e89784331499d05f21071ba7e899f8c Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Fri, 26 Sep 2025 09:14:33 +0000 Subject: [PATCH 2/4] ci: Generate code --- seam/routes/__init__.py | 2 ++ seam/routes/connected_accounts.py | 5 +++- seam/routes/customers.py | 3 ++ seam/routes/models.py | 33 +++++++++++++++++++++- seam/routes/seam.py | 15 ++++++++++ seam/routes/seam_customer_v1_spaces.py | 38 ++++++++++++++++++++++++++ 6 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 seam/routes/seam.py create mode 100644 seam/routes/seam_customer_v1_spaces.py diff --git a/seam/routes/__init__.py b/seam/routes/__init__.py index 2c14d16..05cdd16 100644 --- a/seam/routes/__init__.py +++ b/seam/routes/__init__.py @@ -16,6 +16,7 @@ from .locks import Locks from .noise_sensors import NoiseSensors from .phones import Phones +from .seam import Seam from .spaces import Spaces from .thermostats import Thermostats from .user_identities import UserIdentities @@ -40,6 +41,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.locks = Locks(client=client, defaults=defaults) self.noise_sensors = NoiseSensors(client=client, defaults=defaults) self.phones = Phones(client=client, defaults=defaults) + self.seam = Seam(client=client, defaults=defaults) self.spaces = Spaces(client=client, defaults=defaults) self.thermostats = Thermostats(client=client, defaults=defaults) self.user_identities = UserIdentities(client=client, defaults=defaults) diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 57637a9..6cee9ad 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -79,7 +79,8 @@ def update( connected_account_id: str, accepted_capabilities: Optional[List[str]] = None, automatically_manage_new_devices: Optional[bool] = None, - custom_metadata: Optional[Dict[str, Any]] = None + custom_metadata: Optional[Dict[str, Any]] = None, + customer_key: Optional[str] = None ) -> None: json_payload = {} @@ -93,6 +94,8 @@ def update( ) if custom_metadata is not None: json_payload["custom_metadata"] = custom_metadata + if customer_key is not None: + json_payload["customer_key"] = customer_key self.client.post("/connected_accounts/update", json=json_payload) diff --git a/seam/routes/customers.py b/seam/routes/customers.py index 1d72409..5dedc41 100644 --- a/seam/routes/customers.py +++ b/seam/routes/customers.py @@ -112,6 +112,7 @@ def push_data( reservations: Optional[List[Dict[str, Any]]] = None, residents: Optional[List[Dict[str, Any]]] = None, rooms: Optional[List[Dict[str, Any]]] = None, + sites: Optional[List[Dict[str, Any]]] = None, spaces: Optional[List[Dict[str, Any]]] = None, tenants: Optional[List[Dict[str, Any]]] = None, units: Optional[List[Dict[str, Any]]] = None, @@ -146,6 +147,8 @@ def push_data( json_payload["residents"] = residents if rooms is not None: json_payload["rooms"] = rooms + if sites is not None: + json_payload["sites"] = sites if spaces is not None: json_payload["spaces"] = spaces if tenants is not None: diff --git a/seam/routes/models.py b/seam/routes/models.py index a6a249e..c214bdf 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -1175,6 +1175,8 @@ class Space: device_count: float display_name: str name: str + parent_space_id: str + parent_space_key: str space_id: str space_key: str workspace_id: str @@ -1187,6 +1189,8 @@ def from_dict(d: Dict[str, Any]): device_count=d.get("device_count", None), display_name=d.get("display_name", None), name=d.get("name", None), + parent_space_id=d.get("parent_space_id", None), + parent_space_key=d.get("parent_space_key", None), space_id=d.get("space_id", None), space_key=d.get("space_key", None), workspace_id=d.get("workspace_id", None), @@ -2266,7 +2270,8 @@ def update( connected_account_id: str, accepted_capabilities: Optional[List[str]] = None, automatically_manage_new_devices: Optional[bool] = None, - custom_metadata: Optional[Dict[str, Any]] = None + custom_metadata: Optional[Dict[str, Any]] = None, + customer_key: Optional[str] = None ) -> None: raise NotImplementedError() @@ -2326,6 +2331,7 @@ def push_data( reservations: Optional[List[Dict[str, Any]]] = None, residents: Optional[List[Dict[str, Any]]] = None, rooms: Optional[List[Dict[str, Any]]] = None, + sites: Optional[List[Dict[str, Any]]] = None, spaces: Optional[List[Dict[str, Any]]] = None, tenants: Optional[List[Dict[str, Any]]] = None, units: Optional[List[Dict[str, Any]]] = None, @@ -2553,6 +2559,22 @@ def create_sandbox_phone( raise NotImplementedError() +class AbstractSeamCustomerV1Spaces(abc.ABC): + + @abc.abstractmethod + def create( + self, + *, + name: str, + acs_entrance_ids: Optional[List[str]] = None, + device_ids: Optional[List[str]] = None, + parent_space_key: Optional[str] = None, + parent_space_name: Optional[str] = None, + space_key: Optional[str] = None + ) -> Space: + raise NotImplementedError() + + class AbstractSpaces(abc.ABC): @abc.abstractmethod @@ -3007,6 +3029,14 @@ def list( raise NotImplementedError() +class AbstractSeam(abc.ABC): + + @property + @abc.abstractmethod + def customer(self) -> AbstractSeamCustomer: + raise NotImplementedError() + + class AbstractUserIdentities(abc.ABC): @property @@ -3607,6 +3637,7 @@ class AbstractRoutes(abc.ABC): locks: AbstractLocks noise_sensors: AbstractNoiseSensors phones: AbstractPhones + seam: AbstractSeam spaces: AbstractSpaces thermostats: AbstractThermostats user_identities: AbstractUserIdentities diff --git a/seam/routes/seam.py b/seam/routes/seam.py new file mode 100644 index 0000000..6956628 --- /dev/null +++ b/seam/routes/seam.py @@ -0,0 +1,15 @@ +from typing import Optional, Any, List, Dict, Union +from ..client import SeamHttpClient +from .models import AbstractSeam +from .seam_customer import SeamCustomer + + +class Seam(AbstractSeam): + def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): + self.client = client + self.defaults = defaults + self._customer = SeamCustomer(client=client, defaults=defaults) + + @property + def customer(self) -> SeamCustomer: + return self._customer diff --git a/seam/routes/seam_customer_v1_spaces.py b/seam/routes/seam_customer_v1_spaces.py new file mode 100644 index 0000000..90bdf78 --- /dev/null +++ b/seam/routes/seam_customer_v1_spaces.py @@ -0,0 +1,38 @@ +from typing import Optional, Any, List, Dict, Union +from ..client import SeamHttpClient +from .models import AbstractSeamCustomerV1Spaces, Space + + +class SeamCustomerV1Spaces(AbstractSeamCustomerV1Spaces): + def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): + self.client = client + self.defaults = defaults + + def create( + self, + *, + name: str, + acs_entrance_ids: Optional[List[str]] = None, + device_ids: Optional[List[str]] = None, + parent_space_key: Optional[str] = None, + parent_space_name: Optional[str] = None, + space_key: Optional[str] = None + ) -> Space: + json_payload = {} + + if name is not None: + json_payload["name"] = name + if acs_entrance_ids is not None: + json_payload["acs_entrance_ids"] = acs_entrance_ids + if device_ids is not None: + json_payload["device_ids"] = device_ids + if parent_space_key is not None: + json_payload["parent_space_key"] = parent_space_key + if parent_space_name is not None: + json_payload["parent_space_name"] = parent_space_name + if space_key is not None: + json_payload["space_key"] = space_key + + res = self.client.post("/seam/customer/v1/spaces/create", json=json_payload) + + return Space.from_dict(res["space"]) From 9a19a7bf0129d0d067f5d1990b04555141adc6a9 Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 21 Oct 2025 20:49:27 +0200 Subject: [PATCH 3/4] Generator 1.19.4 update --- 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 ed54f3f..9b12c57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "name": "@seamapi/python", "devDependencies": { "@seamapi/fake-seam-connect": "1.85.1", - "@seamapi/nextlove-sdk-generator": "^1.19.1", + "@seamapi/nextlove-sdk-generator": "^1.19.4", "@seamapi/types": "1.591.0", "del": "^7.1.0", "prettier": "^3.2.5" @@ -453,9 +453,9 @@ } }, "node_modules/@seamapi/nextlove-sdk-generator": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.19.1.tgz", - "integrity": "sha512-6uh6LBthvJ8y4uAOC54NZLixtOacY/+K+rEK2O94TnWdr/GFfCT+x2vMxt7sp2D73+EV7yYjvmDM5AIiKH10lQ==", + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.19.4.tgz", + "integrity": "sha512-zzYiomcX1Swe+Bxg6PCQM+AY+XtRQCC2osbCAwSJ0cEcIkQTIiCCOy6SFBFsUXBUE8IwGStig2zdSqK6f83bww==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 988cacd..aa20e8b 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@seamapi/fake-seam-connect": "1.85.1", - "@seamapi/nextlove-sdk-generator": "^1.19.1", + "@seamapi/nextlove-sdk-generator": "^1.19.4", "@seamapi/types": "1.591.0", "del": "^7.1.0", "prettier": "^3.2.5" From 632e1cf60bd6c4448029d7734120d1340e456c93 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Tue, 21 Oct 2025 18:50:32 +0000 Subject: [PATCH 4/4] ci: Generate code --- seam/routes/__init__.py | 2 -- seam/routes/models.py | 25 ----------------- seam/routes/seam.py | 15 ---------- seam/routes/seam_customer_v1_spaces.py | 38 -------------------------- 4 files changed, 80 deletions(-) delete mode 100644 seam/routes/seam.py delete mode 100644 seam/routes/seam_customer_v1_spaces.py diff --git a/seam/routes/__init__.py b/seam/routes/__init__.py index 05cdd16..2c14d16 100644 --- a/seam/routes/__init__.py +++ b/seam/routes/__init__.py @@ -16,7 +16,6 @@ from .locks import Locks from .noise_sensors import NoiseSensors from .phones import Phones -from .seam import Seam from .spaces import Spaces from .thermostats import Thermostats from .user_identities import UserIdentities @@ -41,7 +40,6 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.locks = Locks(client=client, defaults=defaults) self.noise_sensors = NoiseSensors(client=client, defaults=defaults) self.phones = Phones(client=client, defaults=defaults) - self.seam = Seam(client=client, defaults=defaults) self.spaces = Spaces(client=client, defaults=defaults) self.thermostats = Thermostats(client=client, defaults=defaults) self.user_identities = UserIdentities(client=client, defaults=defaults) diff --git a/seam/routes/models.py b/seam/routes/models.py index c214bdf..a02f5d5 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -2559,22 +2559,6 @@ def create_sandbox_phone( raise NotImplementedError() -class AbstractSeamCustomerV1Spaces(abc.ABC): - - @abc.abstractmethod - def create( - self, - *, - name: str, - acs_entrance_ids: Optional[List[str]] = None, - device_ids: Optional[List[str]] = None, - parent_space_key: Optional[str] = None, - parent_space_name: Optional[str] = None, - space_key: Optional[str] = None - ) -> Space: - raise NotImplementedError() - - class AbstractSpaces(abc.ABC): @abc.abstractmethod @@ -3029,14 +3013,6 @@ def list( raise NotImplementedError() -class AbstractSeam(abc.ABC): - - @property - @abc.abstractmethod - def customer(self) -> AbstractSeamCustomer: - raise NotImplementedError() - - class AbstractUserIdentities(abc.ABC): @property @@ -3637,7 +3613,6 @@ class AbstractRoutes(abc.ABC): locks: AbstractLocks noise_sensors: AbstractNoiseSensors phones: AbstractPhones - seam: AbstractSeam spaces: AbstractSpaces thermostats: AbstractThermostats user_identities: AbstractUserIdentities diff --git a/seam/routes/seam.py b/seam/routes/seam.py deleted file mode 100644 index 6956628..0000000 --- a/seam/routes/seam.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Optional, Any, List, Dict, Union -from ..client import SeamHttpClient -from .models import AbstractSeam -from .seam_customer import SeamCustomer - - -class Seam(AbstractSeam): - def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): - self.client = client - self.defaults = defaults - self._customer = SeamCustomer(client=client, defaults=defaults) - - @property - def customer(self) -> SeamCustomer: - return self._customer diff --git a/seam/routes/seam_customer_v1_spaces.py b/seam/routes/seam_customer_v1_spaces.py deleted file mode 100644 index 90bdf78..0000000 --- a/seam/routes/seam_customer_v1_spaces.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import Optional, Any, List, Dict, Union -from ..client import SeamHttpClient -from .models import AbstractSeamCustomerV1Spaces, Space - - -class SeamCustomerV1Spaces(AbstractSeamCustomerV1Spaces): - def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): - self.client = client - self.defaults = defaults - - def create( - self, - *, - name: str, - acs_entrance_ids: Optional[List[str]] = None, - device_ids: Optional[List[str]] = None, - parent_space_key: Optional[str] = None, - parent_space_name: Optional[str] = None, - space_key: Optional[str] = None - ) -> Space: - json_payload = {} - - if name is not None: - json_payload["name"] = name - if acs_entrance_ids is not None: - json_payload["acs_entrance_ids"] = acs_entrance_ids - if device_ids is not None: - json_payload["device_ids"] = device_ids - if parent_space_key is not None: - json_payload["parent_space_key"] = parent_space_key - if parent_space_name is not None: - json_payload["parent_space_name"] = parent_space_name - if space_key is not None: - json_payload["space_key"] = space_key - - res = self.client.post("/seam/customer/v1/spaces/create", json=json_payload) - - return Space.from_dict(res["space"])