diff --git a/package-lock.json b/package-lock.json index 69e05649..03e8308e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,9 +6,9 @@ "": { "name": "@seamapi/python", "devDependencies": { - "@seamapi/fake-seam-connect": "1.82.1", + "@seamapi/fake-seam-connect": "1.83.0", "@seamapi/nextlove-sdk-generator": "1.18.0", - "@seamapi/types": "1.378.0", + "@seamapi/types": "1.384.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -434,9 +434,9 @@ } }, "node_modules/@seamapi/fake-seam-connect": { - "version": "1.82.1", - "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.82.1.tgz", - "integrity": "sha512-8FngEYnliV5k2ouE1IugtHVBNpojgln3SgcYp/CaoQsAPR/vYf/REVTAUfDm0hG6D/MjgbILegxpbD0dGAekYw==", + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.83.0.tgz", + "integrity": "sha512-/Co6khIMI23SC6qRgkAaRM5CE41xo6qHga9Go+u21r2RvSPAaUxnA0A64nN0dyKe4o/87NHGlKWkxrAiT1XoVA==", "dev": true, "license": "MIT", "bin": { @@ -475,9 +475,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.378.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.378.0.tgz", - "integrity": "sha512-BPI8NRTOMHJHV7r83LSIDJZGzshYAPz+Eqc5juzJwMs/QMND/UT0bT8/JMiH/guEbQMq+64b4PvUdHiIYuk2hg==", + "version": "1.384.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.384.0.tgz", + "integrity": "sha512-pFQF4O7LaLu9J2yfNxtiuN/kCYX5WH0Sdccx6BC1rYQqwQSD1m5/yXTq14iCBa6z2R8Fw09WRU5Zp+NjHtleQQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index caa5ca29..9abcf0dd 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,9 @@ "start": "fake-seam-connect --seed" }, "devDependencies": { - "@seamapi/fake-seam-connect": "1.82.1", + "@seamapi/fake-seam-connect": "1.83.0", "@seamapi/nextlove-sdk-generator": "1.18.0", - "@seamapi/types": "1.378.0", + "@seamapi/types": "1.384.0", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/models.py b/seam/routes/models.py index 898a1b25..e760ff14 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -756,6 +756,29 @@ def from_dict(d: Dict[str, Any]): ) +@dataclass +class InstantKey: + client_session_id: str + created_at: str + expires_at: str + instant_key_id: str + instant_key_url: str + user_identity_id: str + workspace_id: str + + @staticmethod + def from_dict(d: Dict[str, Any]): + return InstantKey( + client_session_id=d.get("client_session_id", None), + created_at=d.get("created_at", None), + expires_at=d.get("expires_at", None), + instant_key_id=d.get("instant_key_id", None), + instant_key_url=d.get("instant_key_url", None), + user_identity_id=d.get("user_identity_id", None), + workspace_id=d.get("workspace_id", None), + ) + + @dataclass class Network: created_at: str @@ -2133,6 +2156,10 @@ def create( def delete(self, *, user_identity_id: str) -> None: raise NotImplementedError() + @abc.abstractmethod + def generate_instant_key(self, *, user_identity_id: str) -> InstantKey: + raise NotImplementedError() + @abc.abstractmethod def get( self, diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index d6e2ab9e..77901923 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -1,6 +1,13 @@ from typing import Optional, Any, List, Dict, Union from ..client import SeamHttpClient -from .models import AbstractUserIdentities, UserIdentity, Device, AcsSystem, AcsUser +from .models import ( + AbstractUserIdentities, + UserIdentity, + InstantKey, + Device, + AcsSystem, + AcsUser, +) from .user_identities_enrollment_automations import UserIdentitiesEnrollmentAutomations @@ -61,6 +68,18 @@ def delete(self, *, user_identity_id: str) -> None: return None + def generate_instant_key(self, *, user_identity_id: str) -> InstantKey: + json_payload = {} + + if user_identity_id is not None: + json_payload["user_identity_id"] = user_identity_id + + res = self.client.post( + "/user_identities/generate_instant_key", json=json_payload + ) + + return InstantKey.from_dict(res["instant_key"]) + def get( self, *,