diff --git a/package-lock.json b/package-lock.json index f0c4f70..349d589 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,8 +7,8 @@ "name": "@seamapi/python", "devDependencies": { "@seamapi/fake-seam-connect": "1.86.0", - "@seamapi/nextlove-sdk-generator": "^1.19.7", - "@seamapi/types": "1.720.0", + "@seamapi/nextlove-sdk-generator": "^1.19.8", + "@seamapi/types": "1.725.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -513,9 +513,9 @@ } }, "node_modules/@seamapi/nextlove-sdk-generator": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.19.7.tgz", - "integrity": "sha512-ml6MDR9ZRMfNcFSYkU36TkyMBUYTw8mm//biVKRJLQRDyynpJgkIZXJzEREuwlU+Rsb050WthQZqWdb03n4Ueg==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.19.8.tgz", + "integrity": "sha512-kccnwBM2Gy4EydHBNi2Qic0GKcIc22Fa1vAIS4sxQT+Fn/hlXPad8fvvwWC2rIaLSvw+FG0MSRM7Xi1pfDUukg==", "dev": true, "license": "MIT", "dependencies": { @@ -535,14 +535,14 @@ } }, "node_modules/@seamapi/types": { - "version": "1.720.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.720.0.tgz", - "integrity": "sha512-V2290KLLY4GJrnGgW8e8egkzFLLmDeqRb3+hr5c7hZhr4m1OziogheSZGt8HORSD+35UbfNTjSzup7Ip2U9UQA==", + "version": "1.725.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.725.0.tgz", + "integrity": "sha512-Wd2Egv9Vb8vrZVjFXA+sfWHd+liwgHHqRtMAGW58o1654obHYTsdMxs+HDARebKoVQ6YBcVJGcMgz2mIM7lrVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=20.9.0", - "npm": ">=10.1.0" + "node": ">=22.11.0", + "npm": ">=10.9.4" }, "peerDependencies": { "zod": "^3.24.0" diff --git a/package.json b/package.json index f34486a..c085ed6 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ }, "devDependencies": { "@seamapi/fake-seam-connect": "1.86.0", - "@seamapi/nextlove-sdk-generator": "^1.19.7", - "@seamapi/types": "1.720.0", + "@seamapi/nextlove-sdk-generator": "^1.19.8", + "@seamapi/types": "1.725.0", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index 8e83549..d62946f 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -182,6 +182,32 @@ def get( return AccessCode.from_dict(res["access_code"]) + def get_timeline( + self, + *, + access_code_id: str, + after: Optional[str] = None, + before: Optional[str] = None, + event_types: Optional[List[str]] = None, + limit: Optional[float] = None + ) -> None: + json_payload = {} + + if access_code_id is not None: + json_payload["access_code_id"] = access_code_id + if after is not None: + json_payload["after"] = after + if before is not None: + json_payload["before"] = before + if event_types is not None: + json_payload["event_types"] = event_types + if limit is not None: + json_payload["limit"] = limit + + self.client.post("/access_codes/get_timeline", json=json_payload) + + return None + def list( self, *, @@ -190,6 +216,7 @@ def list( device_id: Optional[str] = None, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: json_payload = {} @@ -204,6 +231,8 @@ def list( json_payload["limit"] = limit if page_cursor is not None: json_payload["page_cursor"] = page_cursor + if search is not None: + json_payload["search"] = search if user_identifier_key is not None: json_payload["user_identifier_key"] = user_identifier_key diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index 2556f17..262ad53 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -76,6 +76,7 @@ def list( device_id: str, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: json_payload = {} @@ -86,6 +87,8 @@ def list( json_payload["limit"] = limit if page_cursor is not None: json_payload["page_cursor"] = page_cursor + if search is not None: + json_payload["search"] = search if user_identifier_key is not None: json_payload["user_identifier_key"] = user_identifier_key diff --git a/seam/routes/access_grants.py b/seam/routes/access_grants.py index 903de9e..afb6de3 100644 --- a/seam/routes/access_grants.py +++ b/seam/routes/access_grants.py @@ -100,7 +100,8 @@ def get( def get_related( self, *, - access_grant_ids: List[str], + access_grant_ids: Optional[List[str]] = None, + access_grant_keys: Optional[List[str]] = None, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: @@ -108,6 +109,8 @@ def get_related( if access_grant_ids is not None: json_payload["access_grant_ids"] = access_grant_ids + if access_grant_keys is not None: + json_payload["access_grant_keys"] = access_grant_keys if exclude is not None: json_payload["exclude"] = exclude if include is not None: diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 6ae41ac..a5cd6b5 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -53,6 +53,7 @@ def list( *, acs_system_id: Optional[str] = None, acs_user_id: Optional[str] = None, + search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: json_payload = {} @@ -61,6 +62,8 @@ def list( json_payload["acs_system_id"] = acs_system_id if acs_user_id is not None: json_payload["acs_user_id"] = acs_user_id + if search is not None: + json_payload["search"] = search if user_identity_id is not None: json_payload["user_identity_id"] = user_identity_id diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index 29a6d63..f5bf1b4 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -22,7 +22,8 @@ def list( self, *, connected_account_id: Optional[str] = None, - customer_key: Optional[str] = None + customer_key: Optional[str] = None, + search: Optional[str] = None ) -> List[AcsSystem]: json_payload = {} @@ -30,6 +31,8 @@ def list( json_payload["connected_account_id"] = connected_account_id if customer_key is not None: json_payload["customer_key"] = customer_key + if search is not None: + json_payload["search"] = search res = self.client.post("/acs/systems/list", json=json_payload) diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index 1f6e591..6d7829a 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -81,6 +81,7 @@ def list( customer_key: Optional[str] = None, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: json_payload = {} @@ -93,6 +94,8 @@ def list( json_payload["limit"] = limit if page_cursor is not None: json_payload["page_cursor"] = page_cursor + if search is not None: + json_payload["search"] = search if user_identifier_key is not None: json_payload["user_identifier_key"] = user_identifier_key diff --git a/seam/routes/customers.py b/seam/routes/customers.py index e31f039..cee04f8 100644 --- a/seam/routes/customers.py +++ b/seam/routes/customers.py @@ -1,28 +1,43 @@ from typing import Optional, Any, List, Dict, Union from ..client import SeamHttpClient from .models import AbstractCustomers, MagicLink +from .customers_reservations import CustomersReservations class Customers(AbstractCustomers): def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.client = client self.defaults = defaults + self._reservations = CustomersReservations(client=client, defaults=defaults) + + @property + def reservations(self) -> CustomersReservations: + return self._reservations def create_portal( self, *, + customer_resources_filters: Optional[List[Dict[str, Any]]] = None, customization_profile_id: Optional[str] = None, + deep_link: Optional[Dict[str, Any]] = None, + exclude_locale_picker: Optional[bool] = None, features: Optional[Dict[str, Any]] = None, is_embedded: Optional[bool] = None, landing_page: Optional[Dict[str, Any]] = None, locale: Optional[str] = None, - property_listing_filter: Optional[Dict[str, Any]] = None, + navigation_mode: Optional[str] = None, customer_data: Optional[Dict[str, Any]] = None ) -> MagicLink: json_payload = {} + if customer_resources_filters is not None: + json_payload["customer_resources_filters"] = customer_resources_filters if customization_profile_id is not None: json_payload["customization_profile_id"] = customization_profile_id + if deep_link is not None: + json_payload["deep_link"] = deep_link + if exclude_locale_picker is not None: + json_payload["exclude_locale_picker"] = exclude_locale_picker if features is not None: json_payload["features"] = features if is_embedded is not None: @@ -31,8 +46,8 @@ def create_portal( json_payload["landing_page"] = landing_page if locale is not None: json_payload["locale"] = locale - if property_listing_filter is not None: - json_payload["property_listing_filter"] = property_listing_filter + if navigation_mode is not None: + json_payload["navigation_mode"] = navigation_mode if customer_data is not None: json_payload["customer_data"] = customer_data diff --git a/seam/routes/customers_reservations.py b/seam/routes/customers_reservations.py new file mode 100644 index 0000000..1b33221 --- /dev/null +++ b/seam/routes/customers_reservations.py @@ -0,0 +1,21 @@ +from typing import Optional, Any, List, Dict, Union +from ..client import SeamHttpClient +from .models import AbstractCustomersReservations + + +class CustomersReservations(AbstractCustomersReservations): + def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): + self.client = client + self.defaults = defaults + + def create_deep_link(self, *, customer_key: str, reservation_key: str) -> None: + json_payload = {} + + if customer_key is not None: + json_payload["customer_key"] = customer_key + if reservation_key is not None: + json_payload["reservation_key"] = reservation_key + + self.client.post("/customers/reservations/create_deep_link", json=json_payload) + + return None diff --git a/seam/routes/models.py b/seam/routes/models.py index 67e9618..fb10814 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -12,6 +12,7 @@ class AccessCode: common_code_key: str created_at: str device_id: str + dormakaba_oracode_metadata: Dict[str, Any] ends_at: str errors: List[Dict[str, Any]] is_backup: bool @@ -38,6 +39,9 @@ def from_dict(d: Dict[str, Any]): common_code_key=d.get("common_code_key", None), created_at=d.get("created_at", None), device_id=d.get("device_id", None), + dormakaba_oracode_metadata=DeepAttrDict( + d.get("dormakaba_oracode_metadata", None) + ), ends_at=d.get("ends_at", None), errors=d.get("errors", None), is_backup=d.get("is_backup", None), @@ -78,6 +82,7 @@ class AccessGrant: instant_key_url: str location_ids: List[str] name: str + pending_mutations: List[Dict[str, Any]] requested_access_methods: List[Dict[str, Any]] reservation_key: str space_ids: List[str] @@ -101,6 +106,7 @@ def from_dict(d: Dict[str, Any]): instant_key_url=d.get("instant_key_url", None), location_ids=d.get("location_ids", None), name=d.get("name", None), + pending_mutations=d.get("pending_mutations", None), requested_access_methods=d.get("requested_access_methods", None), reservation_key=d.get("reservation_key", None), space_ids=d.get("space_ids", None), @@ -124,6 +130,7 @@ class AccessMethod: is_issued: bool issued_at: str mode: str + pending_mutations: List[Dict[str, Any]] warnings: List[Dict[str, Any]] workspace_id: str @@ -141,6 +148,7 @@ def from_dict(d: Dict[str, Any]): is_issued=d.get("is_issued", None), issued_at=d.get("issued_at", None), mode=d.get("mode", None), + pending_mutations=d.get("pending_mutations", None), warnings=d.get("warnings", None), workspace_id=d.get("workspace_id", None), ) @@ -997,6 +1005,12 @@ class SeamEvent: occurred_at: str workspace_id: str code: str + access_code_errors: List[Dict[str, Any]] + access_code_warnings: List[Dict[str, Any]] + connected_account_errors: List[Dict[str, Any]] + connected_account_warnings: List[Dict[str, Any]] + device_errors: List[Dict[str, Any]] + device_warnings: List[Dict[str, Any]] backup_access_code_id: str access_grant_id: str acs_entrance_id: str @@ -1009,6 +1023,8 @@ class SeamEvent: access_method_id: str is_backup_code: bool acs_system_id: str + acs_system_errors: List[Dict[str, Any]] + acs_system_warnings: List[Dict[str, Any]] acs_credential_id: str acs_user_id: str acs_encoder_id: str @@ -1016,7 +1032,6 @@ class SeamEvent: client_session_id: str connect_webview_id: str customer_key: str - connected_account_errors: List[Dict[str, Any]] connected_account_type: str action_attempt_id: str action_type: str @@ -1073,6 +1088,12 @@ def from_dict(d: Dict[str, Any]): occurred_at=d.get("occurred_at", None), workspace_id=d.get("workspace_id", None), code=d.get("code", None), + access_code_errors=d.get("access_code_errors", None), + access_code_warnings=d.get("access_code_warnings", None), + connected_account_errors=d.get("connected_account_errors", None), + connected_account_warnings=d.get("connected_account_warnings", None), + device_errors=d.get("device_errors", None), + device_warnings=d.get("device_warnings", None), backup_access_code_id=d.get("backup_access_code_id", None), access_grant_id=d.get("access_grant_id", None), acs_entrance_id=d.get("acs_entrance_id", None), @@ -1085,6 +1106,8 @@ def from_dict(d: Dict[str, Any]): access_method_id=d.get("access_method_id", None), is_backup_code=d.get("is_backup_code", None), acs_system_id=d.get("acs_system_id", None), + acs_system_errors=d.get("acs_system_errors", None), + acs_system_warnings=d.get("acs_system_warnings", None), acs_credential_id=d.get("acs_credential_id", None), acs_user_id=d.get("acs_user_id", None), acs_encoder_id=d.get("acs_encoder_id", None), @@ -1092,7 +1115,6 @@ def from_dict(d: Dict[str, Any]): client_session_id=d.get("client_session_id", None), connect_webview_id=d.get("connect_webview_id", None), customer_key=d.get("customer_key", None), - connected_account_errors=d.get("connected_account_errors", None), connected_account_type=d.get("connected_account_type", None), action_attempt_id=d.get("action_attempt_id", None), action_type=d.get("action_type", None), @@ -1408,6 +1430,7 @@ class UnmanagedAccessCode: code: str created_at: str device_id: str + dormakaba_oracode_metadata: Dict[str, Any] ends_at: str errors: List[Dict[str, Any]] is_managed: bool @@ -1425,6 +1448,9 @@ def from_dict(d: Dict[str, Any]): code=d.get("code", None), created_at=d.get("created_at", None), device_id=d.get("device_id", None), + dormakaba_oracode_metadata=DeepAttrDict( + d.get("dormakaba_oracode_metadata", None) + ), ends_at=d.get("ends_at", None), errors=d.get("errors", None), is_managed=d.get("is_managed", None), @@ -1814,6 +1840,7 @@ def list( device_id: str, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: raise NotImplementedError() @@ -1903,6 +1930,7 @@ def list( *, acs_system_id: Optional[str] = None, acs_user_id: Optional[str] = None, + search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: raise NotImplementedError() @@ -2138,7 +2166,8 @@ def list( self, *, connected_account_id: Optional[str] = None, - customer_key: Optional[str] = None + customer_key: Optional[str] = None, + search: Optional[str] = None ) -> List[AcsSystem]: raise NotImplementedError() @@ -2416,6 +2445,7 @@ def list( customer_key: Optional[str] = None, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: raise NotImplementedError() @@ -2428,73 +2458,10 @@ def disconnect(self, *, connected_account_id: str) -> None: raise NotImplementedError() -class AbstractCustomers(abc.ABC): - - @abc.abstractmethod - def create_portal( - self, - *, - customization_profile_id: Optional[str] = None, - features: Optional[Dict[str, Any]] = None, - is_embedded: Optional[bool] = None, - landing_page: Optional[Dict[str, Any]] = None, - locale: Optional[str] = None, - property_listing_filter: Optional[Dict[str, Any]] = None, - customer_data: Optional[Dict[str, Any]] = None - ) -> MagicLink: - raise NotImplementedError() - - @abc.abstractmethod - def delete_data( - self, - *, - access_grant_keys: Optional[List[str]] = None, - booking_keys: Optional[List[str]] = None, - building_keys: Optional[List[str]] = None, - common_area_keys: Optional[List[str]] = None, - customer_keys: Optional[List[str]] = None, - facility_keys: Optional[List[str]] = None, - guest_keys: Optional[List[str]] = None, - listing_keys: Optional[List[str]] = None, - property_keys: Optional[List[str]] = None, - property_listing_keys: Optional[List[str]] = None, - reservation_keys: Optional[List[str]] = None, - resident_keys: Optional[List[str]] = None, - room_keys: Optional[List[str]] = None, - space_keys: Optional[List[str]] = None, - staff_member_keys: Optional[List[str]] = None, - tenant_keys: Optional[List[str]] = None, - unit_keys: Optional[List[str]] = None, - user_identity_keys: Optional[List[str]] = None, - user_keys: Optional[List[str]] = None - ) -> None: - raise NotImplementedError() +class AbstractCustomersReservations(abc.ABC): @abc.abstractmethod - def push_data( - self, - *, - customer_key: str, - access_grants: Optional[List[Dict[str, Any]]] = None, - bookings: Optional[List[Dict[str, Any]]] = None, - buildings: Optional[List[Dict[str, Any]]] = None, - common_areas: Optional[List[Dict[str, Any]]] = None, - facilities: Optional[List[Dict[str, Any]]] = None, - guests: Optional[List[Dict[str, Any]]] = None, - listings: Optional[List[Dict[str, Any]]] = None, - properties: Optional[List[Dict[str, Any]]] = None, - property_listings: Optional[List[Dict[str, Any]]] = None, - 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, - staff_members: Optional[List[Dict[str, Any]]] = None, - tenants: Optional[List[Dict[str, Any]]] = None, - units: Optional[List[Dict[str, Any]]] = None, - user_identities: Optional[List[Dict[str, Any]]] = None, - users: Optional[List[Dict[str, Any]]] = None - ) -> None: + def create_deep_link(self, *, customer_key: str, reservation_key: str) -> None: raise NotImplementedError() @@ -2965,6 +2932,7 @@ def create( connect_partner_name: Optional[str] = None, connect_webview_customization: Optional[Dict[str, Any]] = None, is_sandbox: Optional[bool] = None, + organization_id: Optional[str] = None, webview_logo_shape: Optional[str] = None, webview_primary_button_color: Optional[str] = None, webview_primary_button_text_color: Optional[str] = None, @@ -3037,7 +3005,8 @@ def get( def get_related( self, *, - access_grant_ids: List[str], + access_grant_ids: Optional[List[str]] = None, + access_grant_keys: Optional[List[str]] = None, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: @@ -3173,6 +3142,84 @@ def update( raise NotImplementedError() +class AbstractCustomers(abc.ABC): + + @property + @abc.abstractmethod + def reservations(self) -> AbstractCustomersReservations: + raise NotImplementedError() + + @abc.abstractmethod + def create_portal( + self, + *, + customer_resources_filters: Optional[List[Dict[str, Any]]] = None, + customization_profile_id: Optional[str] = None, + deep_link: Optional[Dict[str, Any]] = None, + exclude_locale_picker: Optional[bool] = None, + features: Optional[Dict[str, Any]] = None, + is_embedded: Optional[bool] = None, + landing_page: Optional[Dict[str, Any]] = None, + locale: Optional[str] = None, + navigation_mode: Optional[str] = None, + customer_data: Optional[Dict[str, Any]] = None + ) -> MagicLink: + raise NotImplementedError() + + @abc.abstractmethod + def delete_data( + self, + *, + access_grant_keys: Optional[List[str]] = None, + booking_keys: Optional[List[str]] = None, + building_keys: Optional[List[str]] = None, + common_area_keys: Optional[List[str]] = None, + customer_keys: Optional[List[str]] = None, + facility_keys: Optional[List[str]] = None, + guest_keys: Optional[List[str]] = None, + listing_keys: Optional[List[str]] = None, + property_keys: Optional[List[str]] = None, + property_listing_keys: Optional[List[str]] = None, + reservation_keys: Optional[List[str]] = None, + resident_keys: Optional[List[str]] = None, + room_keys: Optional[List[str]] = None, + space_keys: Optional[List[str]] = None, + staff_member_keys: Optional[List[str]] = None, + tenant_keys: Optional[List[str]] = None, + unit_keys: Optional[List[str]] = None, + user_identity_keys: Optional[List[str]] = None, + user_keys: Optional[List[str]] = None + ) -> None: + raise NotImplementedError() + + @abc.abstractmethod + def push_data( + self, + *, + customer_key: str, + access_grants: Optional[List[Dict[str, Any]]] = None, + bookings: Optional[List[Dict[str, Any]]] = None, + buildings: Optional[List[Dict[str, Any]]] = None, + common_areas: Optional[List[Dict[str, Any]]] = None, + facilities: Optional[List[Dict[str, Any]]] = None, + guests: Optional[List[Dict[str, Any]]] = None, + listings: Optional[List[Dict[str, Any]]] = None, + properties: Optional[List[Dict[str, Any]]] = None, + property_listings: Optional[List[Dict[str, Any]]] = None, + 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, + staff_members: Optional[List[Dict[str, Any]]] = None, + tenants: Optional[List[Dict[str, Any]]] = None, + units: Optional[List[Dict[str, Any]]] = None, + user_identities: Optional[List[Dict[str, Any]]] = None, + users: Optional[List[Dict[str, Any]]] = None + ) -> None: + raise NotImplementedError() + + class AbstractLocks(abc.ABC): @property @@ -3437,6 +3484,18 @@ def get( ) -> AccessCode: raise NotImplementedError() + @abc.abstractmethod + def get_timeline( + self, + *, + access_code_id: str, + after: Optional[str] = None, + before: Optional[str] = None, + event_types: Optional[List[str]] = None, + limit: Optional[float] = None + ) -> None: + raise NotImplementedError() + @abc.abstractmethod def list( self, @@ -3446,6 +3505,7 @@ def list( device_id: Optional[str] = None, limit: Optional[float] = None, page_cursor: Optional[str] = None, + search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: raise NotImplementedError() diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index c41b28b..0ae9717 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -18,6 +18,7 @@ def create( connect_partner_name: Optional[str] = None, connect_webview_customization: Optional[Dict[str, Any]] = None, is_sandbox: Optional[bool] = None, + organization_id: Optional[str] = None, webview_logo_shape: Optional[str] = None, webview_primary_button_color: Optional[str] = None, webview_primary_button_text_color: Optional[str] = None, @@ -37,6 +38,8 @@ def create( ) if is_sandbox is not None: json_payload["is_sandbox"] = is_sandbox + if organization_id is not None: + json_payload["organization_id"] = organization_id if webview_logo_shape is not None: json_payload["webview_logo_shape"] = webview_logo_shape if webview_primary_button_color is not None: