diff --git a/package-lock.json b/package-lock.json index d86eb7d0..bb4f510f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.83.0", "@seamapi/nextlove-sdk-generator": "^1.18.1", - "@seamapi/types": "1.406.0", + "@seamapi/types": "1.406.2", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -475,9 +475,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.406.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.406.0.tgz", - "integrity": "sha512-I0ZFGCJXsCLOa8CT8798moJi7BVqmZ0vUDf1rLSX+a634aM61g87cZwhhz4BZNTy2zyIWXhHx8alQUcG0bkknw==", + "version": "1.406.2", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.406.2.tgz", + "integrity": "sha512-FclxrgGjw/rrUoPp3BaYEYpour8d6WtxJQZAGFuMDuhqdOly3/PxQZybESoD3gxcYQIk2JQj18RUwWyFInOrBw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 1b24203e..37f56f0d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.83.0", "@seamapi/nextlove-sdk-generator": "^1.18.1", - "@seamapi/types": "1.406.0", + "@seamapi/types": "1.406.2", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/__init__.py b/seam/routes/__init__.py index 692f027f..6f8332c0 100644 --- a/seam/routes/__init__.py +++ b/seam/routes/__init__.py @@ -14,6 +14,7 @@ from .noise_sensors import NoiseSensors from .phones import Phones from .thermostats import Thermostats +from .unstable_partner import UnstablePartner from .user_identities import UserIdentities from .webhooks import Webhooks from .workspaces import Workspaces @@ -34,6 +35,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.noise_sensors = NoiseSensors(client=client, defaults=defaults) self.phones = Phones(client=client, defaults=defaults) self.thermostats = Thermostats(client=client, defaults=defaults) + self.unstable_partner = UnstablePartner(client=client, defaults=defaults) self.user_identities = UserIdentities(client=client, defaults=defaults) self.webhooks = Webhooks(client=client, defaults=defaults) self.workspaces = Workspaces(client=client, defaults=defaults) diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index f05d3dfd..87f3cea8 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -13,6 +13,8 @@ def create( *, connect_webview_ids: Optional[List[str]] = None, connected_account_ids: Optional[List[str]] = None, + customer_id: Optional[str] = None, + customer_key: Optional[str] = None, expires_at: Optional[str] = None, user_identifier_key: Optional[str] = None, user_identity_ids: Optional[List[str]] = None @@ -23,6 +25,10 @@ def create( json_payload["connect_webview_ids"] = connect_webview_ids if connected_account_ids is not None: json_payload["connected_account_ids"] = connected_account_ids + if customer_id is not None: + json_payload["customer_id"] = customer_id + if customer_key is not None: + json_payload["customer_key"] = customer_key if expires_at is not None: json_payload["expires_at"] = expires_at if user_identifier_key is not None: diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index 47c5bd7f..98fb2a15 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -16,6 +16,7 @@ def create( custom_metadata: Optional[Dict[str, Any]] = None, custom_redirect_failure_url: Optional[str] = None, custom_redirect_url: Optional[str] = None, + customer_id: Optional[str] = None, device_selection_mode: Optional[str] = None, provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None @@ -34,6 +35,8 @@ def create( json_payload["custom_redirect_failure_url"] = custom_redirect_failure_url if custom_redirect_url is not None: json_payload["custom_redirect_url"] = custom_redirect_url + if customer_id is not None: + json_payload["customer_id"] = customer_id if device_selection_mode is not None: json_payload["device_selection_mode"] = device_selection_mode if provider_category is not None: @@ -69,6 +72,7 @@ def list( self, *, custom_metadata_has: Optional[Dict[str, Any]] = None, + customer_id: Optional[str] = None, limit: Optional[float] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: @@ -76,6 +80,8 @@ def list( if custom_metadata_has is not None: json_payload["custom_metadata_has"] = custom_metadata_has + if customer_id is not None: + json_payload["customer_id"] = customer_id if limit is not None: json_payload["limit"] = limit if user_identifier_key is not None: diff --git a/seam/routes/models.py b/seam/routes/models.py index 8ca7f007..cb3145bb 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -1694,6 +1694,8 @@ def create( *, connect_webview_ids: Optional[List[str]] = None, connected_account_ids: Optional[List[str]] = None, + customer_id: Optional[str] = None, + customer_key: Optional[str] = None, expires_at: Optional[str] = None, user_identifier_key: Optional[str] = None, user_identity_ids: Optional[List[str]] = None @@ -1765,6 +1767,7 @@ def create( custom_metadata: Optional[Dict[str, Any]] = None, custom_redirect_failure_url: Optional[str] = None, custom_redirect_url: Optional[str] = None, + customer_id: Optional[str] = None, device_selection_mode: Optional[str] = None, provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None @@ -1784,6 +1787,7 @@ def list( self, *, custom_metadata_has: Optional[Dict[str, Any]] = None, + customer_id: Optional[str] = None, limit: Optional[float] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: @@ -2145,6 +2149,19 @@ def temperature_reached( raise NotImplementedError() +class AbstractUnstablePartnerBuildingBlocks(abc.ABC): + + @abc.abstractmethod + def generate_link( + self, + *, + bridge_client_machine_identifier_key: str, + bridge_client_name: str, + bridge_client_time_zone: str + ) -> None: + raise NotImplementedError() + + class AbstractUserIdentitiesEnrollmentAutomations(abc.ABC): @abc.abstractmethod @@ -2259,6 +2276,14 @@ def list( raise NotImplementedError() +class AbstractUnstablePartner(abc.ABC): + + @property + @abc.abstractmethod + def building_blocks(self) -> AbstractUnstablePartnerBuildingBlocks: + raise NotImplementedError() + + class AbstractUserIdentities(abc.ABC): @property @@ -2833,6 +2858,7 @@ class AbstractRoutes(abc.ABC): noise_sensors: AbstractNoiseSensors phones: AbstractPhones thermostats: AbstractThermostats + unstable_partner: AbstractUnstablePartner user_identities: AbstractUserIdentities webhooks: AbstractWebhooks workspaces: AbstractWorkspaces diff --git a/seam/routes/unstable_partner.py b/seam/routes/unstable_partner.py new file mode 100644 index 00000000..dc42f379 --- /dev/null +++ b/seam/routes/unstable_partner.py @@ -0,0 +1,17 @@ +from typing import Optional, Any, List, Dict, Union +from ..client import SeamHttpClient +from .models import AbstractUnstablePartner +from .unstable_partner_building_blocks import UnstablePartnerBuildingBlocks + + +class UnstablePartner(AbstractUnstablePartner): + def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): + self.client = client + self.defaults = defaults + self._building_blocks = UnstablePartnerBuildingBlocks( + client=client, defaults=defaults + ) + + @property + def building_blocks(self) -> UnstablePartnerBuildingBlocks: + return self._building_blocks diff --git a/seam/routes/unstable_partner_building_blocks.py b/seam/routes/unstable_partner_building_blocks.py new file mode 100644 index 00000000..ff5f638d --- /dev/null +++ b/seam/routes/unstable_partner_building_blocks.py @@ -0,0 +1,33 @@ +from typing import Optional, Any, List, Dict, Union +from ..client import SeamHttpClient +from .models import AbstractUnstablePartnerBuildingBlocks + + +class UnstablePartnerBuildingBlocks(AbstractUnstablePartnerBuildingBlocks): + def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): + self.client = client + self.defaults = defaults + + def generate_link( + self, + *, + bridge_client_machine_identifier_key: str, + bridge_client_name: str, + bridge_client_time_zone: str + ) -> None: + json_payload = {} + + if bridge_client_machine_identifier_key is not None: + json_payload["bridge_client_machine_identifier_key"] = ( + bridge_client_machine_identifier_key + ) + if bridge_client_name is not None: + json_payload["bridge_client_name"] = bridge_client_name + if bridge_client_time_zone is not None: + json_payload["bridge_client_time_zone"] = bridge_client_time_zone + + self.client.post( + "/unstable_partner/building_blocks/generate_link", json=json_payload + ) + + return None