diff --git a/package-lock.json b/package-lock.json index dcfd5c44..7c22c341 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.73.1", "@seamapi/nextlove-sdk-generator": "1.14.12", - "@seamapi/types": "1.301.0", + "@seamapi/types": "1.302.0", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -471,9 +471,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.301.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.301.0.tgz", - "integrity": "sha512-EJPYQIJR/1j0+kGitwo0ZXfagRwpkWJwii0senlBS65gHoyJXUdbxL14b7kV1hdhfZbE3N/r+vR2rbh7wNZn3A==", + "version": "1.302.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.302.0.tgz", + "integrity": "sha512-nIcb26cEhy4sNEtgwWLhzPaprFdUWfpiOEx3OaUP8B/wgb2pXsyNDOFmFX4rhjX5CGgC/3zd1c4RrfE9AER0FA==", "dev": true, "engines": { "node": ">=18.12.0", diff --git a/package.json b/package.json index cc6153d7..e99eadae 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.73.1", "@seamapi/nextlove-sdk-generator": "1.14.12", - "@seamapi/types": "1.301.0", + "@seamapi/types": "1.302.0", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index 52c1f474..c80eda9b 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -65,6 +65,34 @@ def create( return AcsCredential.from_dict(res["acs_credential"]) + def create_offline_code( + self, + *, + acs_user_id: str, + allowed_acs_entrance_id: Optional[str] = None, + ends_at: Optional[str] = None, + is_one_time_use: Optional[bool] = None, + starts_at: Optional[str] = None + ) -> AcsCredential: + json_payload = {} + + if acs_user_id is not None: + json_payload["acs_user_id"] = acs_user_id + if allowed_acs_entrance_id is not None: + json_payload["allowed_acs_entrance_id"] = allowed_acs_entrance_id + if ends_at is not None: + json_payload["ends_at"] = ends_at + if is_one_time_use is not None: + json_payload["is_one_time_use"] = is_one_time_use + if starts_at is not None: + json_payload["starts_at"] = starts_at + + res = self.client.post( + "/acs/credentials/create_offline_code", json=json_payload + ) + + return AcsCredential.from_dict(res["acs_credential"]) + def delete(self, *, acs_credential_id: str) -> None: json_payload = {} diff --git a/seam/routes/models.py b/seam/routes/models.py index b31a3f99..e8032df9 100644 --- a/seam/routes/models.py +++ b/seam/routes/models.py @@ -1100,6 +1100,18 @@ def create( ) -> AcsCredential: raise NotImplementedError() + @abc.abstractmethod + def create_offline_code( + self, + *, + acs_user_id: str, + allowed_acs_entrance_id: Optional[str] = None, + ends_at: Optional[str] = None, + is_one_time_use: Optional[bool] = None, + starts_at: Optional[str] = None + ) -> AcsCredential: + raise NotImplementedError() + @abc.abstractmethod def delete(self, *, acs_credential_id: str) -> None: raise NotImplementedError()