diff --git a/.gitignore b/.gitignore index 4829686..733c54e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +.DS_Store +**/.speakeasy/temp/ +**/.speakeasy/logs/ +.DS_Store /models /models/errors /types diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index d4cd300..31bc37c 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 7d97a20d-0f3d-43c0-811c-95313a801624 management: - docChecksum: a03ebe085eb661cdbe01107d63729706 + docChecksum: 8e78dcb4bad946f25bef0bce834f7d42 docVersion: 2.0.0 - speakeasyVersion: 1.533.0 - generationVersion: 2.578.0 - releaseVersion: 2.0.0-alpha.7 - configChecksum: 660d8bfb38a8014fbe93cfcaaf22c94c + speakeasyVersion: 1.542.3 + generationVersion: 2.597.9 + releaseVersion: 2.0.0-alpha.8 + configChecksum: eea09d701468a471a467b1456fe16076 repoURL: https://github.com/unkeyed/unkey-ts.git installationURL: https://github.com/unkeyed/unkey-ts published: true @@ -14,7 +14,7 @@ features: typescript: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.11 - core: 3.21.6 + core: 3.21.7 defaultEnabledRetries: 0.1.0 devContainers: 2.90.0 envVarSecurityUsage: 0.1.2 @@ -23,11 +23,12 @@ features: globalSecurityCallbacks: 0.1.0 globalSecurityFlattening: 0.1.0 globalServerURLs: 2.82.4 - mcpServer: 0.9.1 + mcpServer: 0.9.2 nameOverrides: 2.81.2 responseFormat: 0.2.3 retries: 2.83.0 sdkHooks: 0.2.0 + unions: 2.85.8 generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json @@ -44,19 +45,23 @@ generatedFiles: - docs/models/components/identitiescreateidentityresponsedata.md - docs/models/components/livenessresponsedata.md - docs/models/components/meta.md + - docs/models/components/one.md - docs/models/components/pagination.md + - docs/models/components/ratelimit.md - docs/models/components/ratelimitdeleteoverrideresponsedata.md - docs/models/components/ratelimitlimitresponsedata.md - docs/models/components/ratelimitoverride.md - docs/models/components/ratelimitsetoverrideresponsedata.md - docs/models/components/security.md + - docs/models/components/two.md - docs/models/components/v2apiscreateapirequestbody.md - docs/models/components/v2apiscreateapiresponsebody.md - docs/models/components/v2identitiescreateidentityrequestbody.md - docs/models/components/v2identitiescreateidentityrequestbodymeta.md - docs/models/components/v2identitiescreateidentityresponsebody.md + - docs/models/components/v2identitiesdeleteidentityrequestbody.md + - docs/models/components/v2identitiesdeleteidentityresponsebody.md - docs/models/components/v2livenessresponsebody.md - - docs/models/components/v2ratelimit.md - docs/models/components/v2ratelimitdeleteoverriderequestbody.md - docs/models/components/v2ratelimitdeleteoverrideresponsebody.md - docs/models/components/v2ratelimitgetoverriderequestbody.md @@ -86,6 +91,7 @@ generatedFiles: - src/core.ts - src/funcs/apisCreateApi.ts - src/funcs/identitiesCreateIdentity.ts + - src/funcs/identitiesDeleteIdentity.ts - src/funcs/livenessLiveness.ts - src/funcs/ratelimitDeleteOverride.ts - src/funcs/ratelimitGetOverride.ts @@ -127,6 +133,7 @@ generatedFiles: - src/mcp-server/tools.ts - src/mcp-server/tools/apisCreateApi.ts - src/mcp-server/tools/identitiesCreateIdentity.ts + - src/mcp-server/tools/identitiesDeleteIdentity.ts - src/mcp-server/tools/livenessLiveness.ts - src/mcp-server/tools/ratelimitDeleteOverride.ts - src/mcp-server/tools/ratelimitGetOverride.ts @@ -141,6 +148,7 @@ generatedFiles: - src/models/components/livenessresponsedata.ts - src/models/components/meta.ts - src/models/components/pagination.ts + - src/models/components/ratelimit.ts - src/models/components/ratelimitdeleteoverrideresponsedata.ts - src/models/components/ratelimitlimitresponsedata.ts - src/models/components/ratelimitoverride.ts @@ -150,8 +158,9 @@ generatedFiles: - src/models/components/v2apiscreateapiresponsebody.ts - src/models/components/v2identitiescreateidentityrequestbody.ts - src/models/components/v2identitiescreateidentityresponsebody.ts + - src/models/components/v2identitiesdeleteidentityrequestbody.ts + - src/models/components/v2identitiesdeleteidentityresponsebody.ts - src/models/components/v2livenessresponsebody.ts - - src/models/components/v2ratelimit.ts - src/models/components/v2ratelimitdeleteoverriderequestbody.ts - src/models/components/v2ratelimitdeleteoverrideresponsebody.ts - src/models/components/v2ratelimitgetoverriderequestbody.ts @@ -337,7 +346,7 @@ examples: identities.createIdentity: speakeasy-default-identities-create-identity: requestBody: - application/json: {"externalId": "user_123"} + application/json: {"externalId": "user_123", "ratelimits": [{"name": "api", "limit": 944235, "duration": 703242}, {"name": "api", "limit": 17275, "duration": 470912}, {"name": "api", "limit": 919479, "duration": 557622}]} responses: "200": application/json: {"meta": {"requestId": "req_123"}, "data": {"identityId": ""}} @@ -351,5 +360,22 @@ examples: application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} "500": application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} + v2.identities.deleteIdentity: + speakeasy-default-v2-identities-delete-identity: + requestBody: + application/json: {"externalId": "user_123", "identityId": "id_123"} + responses: + "200": + application/json: {} + "400": + application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example", "errors": [{"location": "", "message": ""}, {"location": "", "message": ""}, {"location": "", "message": ""}]}} + "401": + application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} + "403": + application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} + "404": + application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} + "500": + application/problem+json: {"meta": {"requestId": "req_123"}, "error": {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 404, "title": "", "type": "https://example.com/errors/example"}} examplesVersion: 1.0.1 generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index cccdfd6..ad1cf4c 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -14,11 +14,12 @@ generation: parameterOrderingFeb2024: true requestResponseComponentNamesFeb2024: true securityFeb2025: true + sharedErrorComponentsApr2025: false auth: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: true typescript: - version: 2.0.0-alpha.7 + version: 2.0.0-alpha.8 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index c7827bc..84b5c71 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,21 @@ -speakeasyVersion: 1.533.0 +speakeasyVersion: 1.542.3 sources: Unkey API: sourceNamespace: unkey-api - sourceRevisionDigest: sha256:98828cc4229a2093978021ba166190f9c2a0591957cbe712cf1137310f32a913 - sourceBlobDigest: sha256:ca8d6455b76ea23e06ccd91a210ebddeb8898a549c91a83916f8cfa612701594 + sourceRevisionDigest: sha256:2d798e12bb9d98ecad4a686e59ea27861a880f4a014ffdc06a9a9223275d8dfa + sourceBlobDigest: sha256:85b3645ceff5010fc000082dc687048500d03c1978454341fe6b2ab3a63aa75b tags: - latest - - speakeasy-sdk-regen-1744793823 + - speakeasy-sdk-regen-1745453731 - 2.0.0 targets: unkey: source: Unkey API sourceNamespace: unkey-api - sourceRevisionDigest: sha256:98828cc4229a2093978021ba166190f9c2a0591957cbe712cf1137310f32a913 - sourceBlobDigest: sha256:ca8d6455b76ea23e06ccd91a210ebddeb8898a549c91a83916f8cfa612701594 + sourceRevisionDigest: sha256:2d798e12bb9d98ecad4a686e59ea27861a880f4a014ffdc06a9a9223275d8dfa + sourceBlobDigest: sha256:85b3645ceff5010fc000082dc687048500d03c1978454341fe6b2ab3a63aa75b codeSamplesNamespace: unkey-api-typescript-code-samples - codeSamplesRevisionDigest: sha256:00507ef991e4c044e74c353dc79d30dced54e8d534c9f089bdd09f06f7632fa2 + codeSamplesRevisionDigest: sha256:5831c2a91d3cfc455f5bd0561b286c6bf4153120a74e693fbd5f5ede1e56af7d workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 2a7fd62..36191d8 100644 --- a/README.md +++ b/README.md @@ -245,6 +245,7 @@ run(); ### [identities](docs/sdks/identities/README.md) * [createIdentity](docs/sdks/identities/README.md#createidentity) +* [deleteIdentity](docs/sdks/identities/README.md#deleteidentity) ### [liveness](docs/sdks/liveness/README.md) @@ -279,6 +280,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`apisCreateApi`](docs/sdks/apis/README.md#createapi) - [`identitiesCreateIdentity`](docs/sdks/identities/README.md#createidentity) +- [`identitiesDeleteIdentity`](docs/sdks/identities/README.md#deleteidentity) - [`livenessLiveness`](docs/sdks/liveness/README.md#liveness) - Liveness check - [`ratelimitDeleteOverride`](docs/sdks/ratelimit/README.md#deleteoverride) - [`ratelimitGetOverride`](docs/sdks/ratelimit/README.md#getoverride) diff --git a/RELEASES.md b/RELEASES.md index 041ea1e..1a280f2 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -44,4 +44,14 @@ Based on: ### Generated - [typescript v2.0.0-alpha.7] . ### Releases -- [NPM v2.0.0-alpha.7] https://www.npmjs.com/package/@unkey/api/v/2.0.0-alpha.7 - . \ No newline at end of file +- [NPM v2.0.0-alpha.7] https://www.npmjs.com/package/@unkey/api/v/2.0.0-alpha.7 - . + +## 2025-05-08 00:16:03 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.542.3 (2.597.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [typescript v2.0.0-alpha.8] . +### Releases +- [NPM v2.0.0-alpha.8] https://www.npmjs.com/package/@unkey/api/v/2.0.0-alpha.8 - . \ No newline at end of file diff --git a/docs/models/components/one.md b/docs/models/components/one.md new file mode 100644 index 0000000..d4521c9 --- /dev/null +++ b/docs/models/components/one.md @@ -0,0 +1,19 @@ +# One + +## Example Usage + +```typescript +import { One } from "@unkey/api/models/components"; + +let value: One = { + externalId: "user_123", + identityId: "id_123", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `externalId` | *string* | :heavy_check_mark: | The id of this identity in your system.

This usually comes from your authentication provider and could be a userId, organisationId or even an email.
It does not matter what you use, as long as it uniquely identifies something in your application.
| user_123 | +| `identityId` | *string* | :heavy_minus_sign: | The Unkey Identity ID. | id_123 | \ No newline at end of file diff --git a/docs/models/components/v2ratelimit.md b/docs/models/components/ratelimit.md similarity index 74% rename from docs/models/components/v2ratelimit.md rename to docs/models/components/ratelimit.md index a4be426..f30ffea 100644 --- a/docs/models/components/v2ratelimit.md +++ b/docs/models/components/ratelimit.md @@ -1,21 +1,21 @@ -# V2Ratelimit +# Ratelimit ## Example Usage ```typescript -import { V2Ratelimit } from "@unkey/api/models/components"; +import { Ratelimit } from "@unkey/api/models/components"; -let value: V2Ratelimit = { - name: "", - limit: 590340, - duration: 928936, +let value: Ratelimit = { + name: "api", + limit: 55520, + duration: 628977, }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `name` | *string* | :heavy_check_mark: | The name of this limit. You will need to use this again when verifying a key. | -| `limit` | *number* | :heavy_check_mark: | How many requests may pass within a given window before requests are rejected. | -| `duration` | *number* | :heavy_check_mark: | The duration for each ratelimit window in milliseconds. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `name` | *string* | :heavy_check_mark: | The name of this limit. You will need to use this again when verifying a key. | api | +| `limit` | *number* | :heavy_check_mark: | How many requests may pass within a given window before requests are rejected. | | +| `duration` | *number* | :heavy_check_mark: | The duration for each ratelimit window in milliseconds. | | \ No newline at end of file diff --git a/docs/models/components/two.md b/docs/models/components/two.md new file mode 100644 index 0000000..917af4a --- /dev/null +++ b/docs/models/components/two.md @@ -0,0 +1,19 @@ +# Two + +## Example Usage + +```typescript +import { Two } from "@unkey/api/models/components"; + +let value: Two = { + externalId: "user_123", + identityId: "id_123", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `externalId` | *string* | :heavy_minus_sign: | The id of this identity in your system.

This usually comes from your authentication provider and could be a userId, organisationId or even an email.
It does not matter what you use, as long as it uniquely identifies something in your application.
| user_123 | +| `identityId` | *string* | :heavy_check_mark: | The Unkey Identity ID. | id_123 | \ No newline at end of file diff --git a/docs/models/components/v2identitiescreateidentityrequestbody.md b/docs/models/components/v2identitiescreateidentityrequestbody.md index fbd2c13..6523d64 100644 --- a/docs/models/components/v2identitiescreateidentityrequestbody.md +++ b/docs/models/components/v2identitiescreateidentityrequestbody.md @@ -7,6 +7,13 @@ import { V2IdentitiesCreateIdentityRequestBody } from "@unkey/api/models/compone let value: V2IdentitiesCreateIdentityRequestBody = { externalId: "user_123", + ratelimits: [ + { + name: "api", + limit: 274654, + duration: 143926, + }, + ], }; ``` @@ -16,4 +23,4 @@ let value: V2IdentitiesCreateIdentityRequestBody = { | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `externalId` | *string* | :heavy_check_mark: | The id of this identity in your system.

This usually comes from your authentication provider and could be a userId, organisationId or even an email.
It does not matter what you use, as long as it uniquely identifies something in your application.

`externalId`s are unique across your workspace and therefore a `CONFLICT` error is returned when you try to create duplicates.
| user_123 | | `meta` | [components.V2IdentitiesCreateIdentityRequestBodyMeta](../../models/components/v2identitiescreateidentityrequestbodymeta.md) | :heavy_minus_sign: | Attach metadata to this identity that you need to have access to when verifying a key.

This will be returned as part of the `verifyKey` response.
| | -| `ratelimits` | [components.V2Ratelimit](../../models/components/v2ratelimit.md)[] | :heavy_minus_sign: | Attach ratelimits to this identity.

When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. | | \ No newline at end of file +| `ratelimits` | [components.Ratelimit](../../models/components/ratelimit.md)[] | :heavy_minus_sign: | Attach ratelimits to this identity.

When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. | | \ No newline at end of file diff --git a/docs/models/components/v2identitiesdeleteidentityrequestbody.md b/docs/models/components/v2identitiesdeleteidentityrequestbody.md new file mode 100644 index 0000000..62335d2 --- /dev/null +++ b/docs/models/components/v2identitiesdeleteidentityrequestbody.md @@ -0,0 +1,23 @@ +# V2IdentitiesDeleteIdentityRequestBody + + +## Supported Types + +### `components.One` + +```typescript +const value: components.One = { + externalId: "user_123", + identityId: "id_123", +}; +``` + +### `components.Two` + +```typescript +const value: components.Two = { + externalId: "user_123", + identityId: "id_123", +}; +``` + diff --git a/docs/models/components/v2identitiesdeleteidentityresponsebody.md b/docs/models/components/v2identitiesdeleteidentityresponsebody.md new file mode 100644 index 0000000..52fa795 --- /dev/null +++ b/docs/models/components/v2identitiesdeleteidentityresponsebody.md @@ -0,0 +1,14 @@ +# V2IdentitiesDeleteIdentityResponseBody + +## Example Usage + +```typescript +import { V2IdentitiesDeleteIdentityResponseBody } from "@unkey/api/models/components"; + +let value: V2IdentitiesDeleteIdentityResponseBody = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/sdks/identities/README.md b/docs/sdks/identities/README.md index a2f7929..f275df0 100644 --- a/docs/sdks/identities/README.md +++ b/docs/sdks/identities/README.md @@ -6,6 +6,7 @@ ### Available Operations * [createIdentity](#createidentity) +* [deleteIdentity](#deleteidentity) ## createIdentity @@ -21,6 +22,23 @@ const unkey = new Unkey({ async function run() { const result = await unkey.identities.createIdentity({ externalId: "user_123", + ratelimits: [ + { + name: "api", + limit: 944235, + duration: 703242, + }, + { + name: "api", + limit: 17275, + duration: 470912, + }, + { + name: "api", + limit: 919479, + duration: 557622, + }, + ], }); // Handle the result @@ -47,6 +65,23 @@ const unkey = new UnkeyCore({ async function run() { const res = await identitiesCreateIdentity(unkey, { externalId: "user_123", + ratelimits: [ + { + name: "api", + limit: 944235, + duration: 703242, + }, + { + name: "api", + limit: 17275, + duration: 470912, + }, + { + name: "api", + limit: 919479, + duration: 557622, + }, + ], }); if (!res.ok) { @@ -84,4 +119,85 @@ run(); | errors.ForbiddenErrorResponse | 403 | application/problem+json | | errors.ConflictErrorResponse | 409 | application/problem+json | | errors.InternalServerErrorResponse | 500 | application/problem+json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## deleteIdentity + +### Example Usage + +```typescript +import { Unkey } from "@unkey/api"; + +const unkey = new Unkey({ + rootKey: "UNKEY_ROOT_KEY", +}); + +async function run() { + const result = await unkey.identities.deleteIdentity({ + externalId: "user_123", + identityId: "id_123", + }); + + // Handle the result + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { UnkeyCore } from "@unkey/api/core.js"; +import { identitiesDeleteIdentity } from "@unkey/api/funcs/identitiesDeleteIdentity.js"; + +// Use `UnkeyCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const unkey = new UnkeyCore({ + rootKey: "UNKEY_ROOT_KEY", +}); + +async function run() { + const res = await identitiesDeleteIdentity(unkey, { + externalId: "user_123", + identityId: "id_123", + }); + + if (!res.ok) { + throw res.error; + } + + const { value: result } = res; + + // Handle the result + console.log(result); +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [components.V2IdentitiesDeleteIdentityRequestBody](../../models/components/v2identitiesdeleteidentityrequestbody.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[components.V2IdentitiesDeleteIdentityResponseBody](../../models/components/v2identitiesdeleteidentityresponsebody.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestErrorResponse | 400 | application/problem+json | +| errors.UnauthorizedErrorResponse | 401 | application/problem+json | +| errors.ForbiddenErrorResponse | 403 | application/problem+json | +| errors.NotFoundErrorResponse | 404 | application/problem+json | +| errors.InternalServerErrorResponse | 500 | application/problem+json | | errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs index 3483f71..67bccfe 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,6 +11,7 @@ export default [ { rules: { "no-constant-condition": "off", + "no-useless-escape": "off", // Handled by typescript compiler "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "off", diff --git a/jsr.json b/jsr.json index 50d7ace..f2d0219 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@unkey/api", - "version": "2.0.0-alpha.7", + "version": "2.0.0-alpha.8", "exports": { ".": "./src/index.ts", "./models/errors": "./src/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index 72ef9aa..1e2c514 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { "name": "@unkey/api", - "version": "2.0.0-alpha.7", + "version": "2.0.0-alpha.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@unkey/api", - "version": "2.0.0-alpha.7", + "version": "2.0.0-alpha.8", "license": "MIT", "bin": { "mcp": "bin/mcp-server.js" }, "devDependencies": { "@eslint/js": "^9.19.0", - "@modelcontextprotocol/sdk": "^1.5.0", + "@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0", "@stricli/core": "^1.1.1", "@types/express": "^4.17.21", "bun": "^1.2.2", @@ -27,7 +27,7 @@ "zod": "^3.23.4" }, "peerDependencies": { - "@modelcontextprotocol/sdk": "^1.5.0", + "@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0", "zod": ">= 3" }, "peerDependenciesMeta": { diff --git a/package.json b/package.json index 32c7e61..0e280c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@unkey/api", - "version": "2.0.0-alpha.7", + "version": "2.0.0-alpha.8", "author": "Speakeasy", "license": "MIT", "type": "module", @@ -33,7 +33,7 @@ "prepublishOnly": "npm run build" }, "peerDependencies": { - "@modelcontextprotocol/sdk": "^1.5.0", + "@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0", "zod": ">= 3" }, "peerDependenciesMeta": { @@ -43,7 +43,7 @@ }, "devDependencies": { "@eslint/js": "^9.19.0", - "@modelcontextprotocol/sdk": "^1.5.0", + "@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0", "@stricli/core": "^1.1.1", "@types/express": "^4.17.21", "bun": "^1.2.2", diff --git a/src/funcs/identitiesDeleteIdentity.ts b/src/funcs/identitiesDeleteIdentity.ts new file mode 100644 index 0000000..07cd94e --- /dev/null +++ b/src/funcs/identitiesDeleteIdentity.ts @@ -0,0 +1,199 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { UnkeyCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import * as components from "../models/components/index.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function identitiesDeleteIdentity( + client: UnkeyCore, + request: components.V2IdentitiesDeleteIdentityRequestBody, + options?: RequestOptions, +): APIPromise< + Result< + components.V2IdentitiesDeleteIdentityResponseBody, + | errors.BadRequestErrorResponse + | errors.UnauthorizedErrorResponse + | errors.ForbiddenErrorResponse + | errors.NotFoundErrorResponse + | errors.InternalServerErrorResponse + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: UnkeyCore, + request: components.V2IdentitiesDeleteIdentityRequestBody, + options?: RequestOptions, +): Promise< + [ + Result< + components.V2IdentitiesDeleteIdentityResponseBody, + | errors.BadRequestErrorResponse + | errors.UnauthorizedErrorResponse + | errors.ForbiddenErrorResponse + | errors.NotFoundErrorResponse + | errors.InternalServerErrorResponse + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + components.V2IdentitiesDeleteIdentityRequestBody$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload, { explode: true }); + + const path = pathToFunc("/v2/identities.deleteIdentity")(); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.rootKey); + const securityInput = secConfig == null ? {} : { rootKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "v2.identities.deleteIdentity", + oAuth2Scopes: [], + + resolvedSecurity: requestSecurity, + + securitySource: client._options.rootKey, + retryConfig: options?.retries + || client._options.retryConfig + || { + strategy: "backoff", + backoff: { + initialInterval: 50, + maxInterval: 1000, + exponent: 1.5, + maxElapsedTime: 10000, + }, + retryConnectionErrors: true, + } + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["5XX"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + components.V2IdentitiesDeleteIdentityResponseBody, + | errors.BadRequestErrorResponse + | errors.UnauthorizedErrorResponse + | errors.ForbiddenErrorResponse + | errors.NotFoundErrorResponse + | errors.InternalServerErrorResponse + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >( + M.json( + 200, + components.V2IdentitiesDeleteIdentityResponseBody$inboundSchema, + ), + M.jsonErr(400, errors.BadRequestErrorResponse$inboundSchema, { + ctype: "application/problem+json", + }), + M.jsonErr(401, errors.UnauthorizedErrorResponse$inboundSchema, { + ctype: "application/problem+json", + }), + M.jsonErr(403, errors.ForbiddenErrorResponse$inboundSchema, { + ctype: "application/problem+json", + }), + M.jsonErr(404, errors.NotFoundErrorResponse$inboundSchema, { + ctype: "application/problem+json", + }), + M.jsonErr(500, errors.InternalServerErrorResponse$inboundSchema, { + ctype: "application/problem+json", + }), + M.fail("4XX"), + M.fail("5XX"), + )(response, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/src/lib/config.ts b/src/lib/config.ts index b98eeab..ca51e5b 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -54,7 +54,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "2.0.0", - sdkVersion: "2.0.0-alpha.7", - genVersion: "2.578.0", - userAgent: "speakeasy-sdk/typescript 2.0.0-alpha.7 2.578.0 2.0.0 @unkey/api", + sdkVersion: "2.0.0-alpha.8", + genVersion: "2.597.9", + userAgent: "speakeasy-sdk/typescript 2.0.0-alpha.8 2.597.9 2.0.0 @unkey/api", } as const; diff --git a/src/lib/sdks.ts b/src/lib/sdks.ts index 351cc30..d454f53 100644 --- a/src/lib/sdks.ts +++ b/src/lib/sdks.ts @@ -47,12 +47,14 @@ export type RequestOptions = { */ serverURL?: string | URL; /** + * @deprecated `fetchOptions` has been flattened into `RequestOptions`. + * * Sets various request options on the `fetch` call made by an SDK method. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options|Request} */ fetchOptions?: Omit; -}; +} & Omit; type RequestConfig = { method: string; @@ -172,7 +174,9 @@ export class ClientSDK { cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie; headers.set("cookie", cookie); - const userHeaders = new Headers(options?.fetchOptions?.headers); + const userHeaders = new Headers( + options?.headers ?? options?.fetchOptions?.headers, + ); for (const [k, v] of userHeaders) { headers.set(k, v); } @@ -183,20 +187,16 @@ export class ClientSDK { headers.set(conf.uaHeader ?? "user-agent", SDK_METADATA.userAgent); } - let fetchOptions = options?.fetchOptions; + const fetchOptions: Omit = { + ...options?.fetchOptions, + ...options, + }; if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) { const timeoutSignal = AbortSignal.timeout(conf.timeoutMs); - if (!fetchOptions) { - fetchOptions = { signal: timeoutSignal }; - } else { - fetchOptions.signal = timeoutSignal; - } + fetchOptions.signal = timeoutSignal; } if (conf.body instanceof ReadableStream) { - if (!fetchOptions) { - fetchOptions = {}; - } Object.assign(fetchOptions, { duplex: "half" }); } diff --git a/src/mcp-server/mcp-server.ts b/src/mcp-server/mcp-server.ts index a14bdae..e2e081f 100644 --- a/src/mcp-server/mcp-server.ts +++ b/src/mcp-server/mcp-server.ts @@ -19,7 +19,7 @@ const routes = buildRouteMap({ export const app = buildApplication(routes, { name: "mcp", versionInfo: { - currentVersion: "2.0.0-alpha.7", + currentVersion: "2.0.0-alpha.8", }, }); diff --git a/src/mcp-server/server.ts b/src/mcp-server/server.ts index ab1a33a..e231dfd 100644 --- a/src/mcp-server/server.ts +++ b/src/mcp-server/server.ts @@ -15,6 +15,7 @@ import { MCPScope } from "./scopes.js"; import { createRegisterTool } from "./tools.js"; import { tool$apisCreateApi } from "./tools/apisCreateApi.js"; import { tool$identitiesCreateIdentity } from "./tools/identitiesCreateIdentity.js"; +import { tool$identitiesDeleteIdentity } from "./tools/identitiesDeleteIdentity.js"; import { tool$livenessLiveness } from "./tools/livenessLiveness.js"; import { tool$ratelimitDeleteOverride } from "./tools/ratelimitDeleteOverride.js"; import { tool$ratelimitGetOverride } from "./tools/ratelimitGetOverride.js"; @@ -32,7 +33,7 @@ export function createMCPServer(deps: { }) { const server = new McpServer({ name: "Unkey", - version: "2.0.0-alpha.7", + version: "2.0.0-alpha.8", }); const client = new UnkeyCore({ @@ -68,6 +69,7 @@ export function createMCPServer(deps: { tool(tool$ratelimitListOverrides); tool(tool$ratelimitDeleteOverride); tool(tool$identitiesCreateIdentity); + tool(tool$identitiesDeleteIdentity); tool(tool$apisCreateApi); tool(tool$livenessLiveness); diff --git a/src/mcp-server/tools/identitiesDeleteIdentity.ts b/src/mcp-server/tools/identitiesDeleteIdentity.ts new file mode 100644 index 0000000..9662406 --- /dev/null +++ b/src/mcp-server/tools/identitiesDeleteIdentity.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { identitiesDeleteIdentity } from "../../funcs/identitiesDeleteIdentity.js"; +import * as components from "../../models/components/index.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: components.V2IdentitiesDeleteIdentityRequestBody$inboundSchema, +}; + +export const tool$identitiesDeleteIdentity: ToolDefinition = { + name: "identities-delete-identity", + description: ``, + args, + tool: async (client, args, ctx) => { + const [result, apiCall] = await identitiesDeleteIdentity( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + const value = result.value; + + return formatResult(value, apiCall); + }, +}; diff --git a/src/models/components/index.ts b/src/models/components/index.ts index 0ef4bb3..992c20b 100644 --- a/src/models/components/index.ts +++ b/src/models/components/index.ts @@ -9,6 +9,7 @@ export * from "./identitiescreateidentityresponsedata.js"; export * from "./livenessresponsedata.js"; export * from "./meta.js"; export * from "./pagination.js"; +export * from "./ratelimit.js"; export * from "./ratelimitdeleteoverrideresponsedata.js"; export * from "./ratelimitlimitresponsedata.js"; export * from "./ratelimitoverride.js"; @@ -18,8 +19,9 @@ export * from "./v2apiscreateapirequestbody.js"; export * from "./v2apiscreateapiresponsebody.js"; export * from "./v2identitiescreateidentityrequestbody.js"; export * from "./v2identitiescreateidentityresponsebody.js"; +export * from "./v2identitiesdeleteidentityrequestbody.js"; +export * from "./v2identitiesdeleteidentityresponsebody.js"; export * from "./v2livenessresponsebody.js"; -export * from "./v2ratelimit.js"; export * from "./v2ratelimitdeleteoverriderequestbody.js"; export * from "./v2ratelimitdeleteoverrideresponsebody.js"; export * from "./v2ratelimitgetoverriderequestbody.js"; diff --git a/src/models/components/v2ratelimit.ts b/src/models/components/ratelimit.ts similarity index 55% rename from src/models/components/v2ratelimit.ts rename to src/models/components/ratelimit.ts index 09d42fd..c9aa560 100644 --- a/src/models/components/v2ratelimit.ts +++ b/src/models/components/ratelimit.ts @@ -7,7 +7,7 @@ import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; -export type V2Ratelimit = { +export type Ratelimit = { /** * The name of this limit. You will need to use this again when verifying a key. */ @@ -23,8 +23,8 @@ export type V2Ratelimit = { }; /** @internal */ -export const V2Ratelimit$inboundSchema: z.ZodType< - V2Ratelimit, +export const Ratelimit$inboundSchema: z.ZodType< + Ratelimit, z.ZodTypeDef, unknown > = z.object({ @@ -34,17 +34,17 @@ export const V2Ratelimit$inboundSchema: z.ZodType< }); /** @internal */ -export type V2Ratelimit$Outbound = { +export type Ratelimit$Outbound = { name: string; limit: number; duration: number; }; /** @internal */ -export const V2Ratelimit$outboundSchema: z.ZodType< - V2Ratelimit$Outbound, +export const Ratelimit$outboundSchema: z.ZodType< + Ratelimit$Outbound, z.ZodTypeDef, - V2Ratelimit + Ratelimit > = z.object({ name: z.string(), limit: z.number().int(), @@ -55,25 +55,25 @@ export const V2Ratelimit$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace V2Ratelimit$ { - /** @deprecated use `V2Ratelimit$inboundSchema` instead. */ - export const inboundSchema = V2Ratelimit$inboundSchema; - /** @deprecated use `V2Ratelimit$outboundSchema` instead. */ - export const outboundSchema = V2Ratelimit$outboundSchema; - /** @deprecated use `V2Ratelimit$Outbound` instead. */ - export type Outbound = V2Ratelimit$Outbound; +export namespace Ratelimit$ { + /** @deprecated use `Ratelimit$inboundSchema` instead. */ + export const inboundSchema = Ratelimit$inboundSchema; + /** @deprecated use `Ratelimit$outboundSchema` instead. */ + export const outboundSchema = Ratelimit$outboundSchema; + /** @deprecated use `Ratelimit$Outbound` instead. */ + export type Outbound = Ratelimit$Outbound; } -export function v2RatelimitToJSON(v2Ratelimit: V2Ratelimit): string { - return JSON.stringify(V2Ratelimit$outboundSchema.parse(v2Ratelimit)); +export function ratelimitToJSON(ratelimit: Ratelimit): string { + return JSON.stringify(Ratelimit$outboundSchema.parse(ratelimit)); } -export function v2RatelimitFromJSON( +export function ratelimitFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => V2Ratelimit$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'V2Ratelimit' from JSON`, + (x) => Ratelimit$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Ratelimit' from JSON`, ); } diff --git a/src/models/components/v2identitiescreateidentityrequestbody.ts b/src/models/components/v2identitiescreateidentityrequestbody.ts index 6f71253..e9507a2 100644 --- a/src/models/components/v2identitiescreateidentityrequestbody.ts +++ b/src/models/components/v2identitiescreateidentityrequestbody.ts @@ -7,11 +7,11 @@ import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { - V2Ratelimit, - V2Ratelimit$inboundSchema, - V2Ratelimit$Outbound, - V2Ratelimit$outboundSchema, -} from "./v2ratelimit.js"; + Ratelimit, + Ratelimit$inboundSchema, + Ratelimit$Outbound, + Ratelimit$outboundSchema, +} from "./ratelimit.js"; /** * Attach metadata to this identity that you need to have access to when verifying a key. @@ -49,7 +49,7 @@ export type V2IdentitiesCreateIdentityRequestBody = { * * When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ - ratelimits?: Array | undefined; + ratelimits?: Array | undefined; }; /** @internal */ @@ -121,14 +121,14 @@ export const V2IdentitiesCreateIdentityRequestBody$inboundSchema: z.ZodType< externalId: z.string(), meta: z.lazy(() => V2IdentitiesCreateIdentityRequestBodyMeta$inboundSchema) .optional(), - ratelimits: z.array(V2Ratelimit$inboundSchema).optional(), + ratelimits: z.array(Ratelimit$inboundSchema).optional(), }); /** @internal */ export type V2IdentitiesCreateIdentityRequestBody$Outbound = { externalId: string; meta?: V2IdentitiesCreateIdentityRequestBodyMeta$Outbound | undefined; - ratelimits?: Array | undefined; + ratelimits?: Array | undefined; }; /** @internal */ @@ -140,7 +140,7 @@ export const V2IdentitiesCreateIdentityRequestBody$outboundSchema: z.ZodType< externalId: z.string(), meta: z.lazy(() => V2IdentitiesCreateIdentityRequestBodyMeta$outboundSchema) .optional(), - ratelimits: z.array(V2Ratelimit$outboundSchema).optional(), + ratelimits: z.array(Ratelimit$outboundSchema).optional(), }); /** diff --git a/src/models/components/v2identitiesdeleteidentityrequestbody.ts b/src/models/components/v2identitiesdeleteidentityrequestbody.ts new file mode 100644 index 0000000..28d3fed --- /dev/null +++ b/src/models/components/v2identitiesdeleteidentityrequestbody.ts @@ -0,0 +1,194 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type Two = { + /** + * The id of this identity in your system. + * + * @remarks + * + * This usually comes from your authentication provider and could be a userId, organisationId or even an email. + * It does not matter what you use, as long as it uniquely identifies something in your application. + */ + externalId?: string | undefined; + /** + * The Unkey Identity ID. + */ + identityId: string; +}; + +export type One = { + /** + * The id of this identity in your system. + * + * @remarks + * + * This usually comes from your authentication provider and could be a userId, organisationId or even an email. + * It does not matter what you use, as long as it uniquely identifies something in your application. + */ + externalId: string; + /** + * The Unkey Identity ID. + */ + identityId?: string | undefined; +}; + +export type V2IdentitiesDeleteIdentityRequestBody = One | Two; + +/** @internal */ +export const Two$inboundSchema: z.ZodType = z + .object({ + externalId: z.string().optional(), + identityId: z.string(), + }); + +/** @internal */ +export type Two$Outbound = { + externalId?: string | undefined; + identityId: string; +}; + +/** @internal */ +export const Two$outboundSchema: z.ZodType = z + .object({ + externalId: z.string().optional(), + identityId: z.string(), + }); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Two$ { + /** @deprecated use `Two$inboundSchema` instead. */ + export const inboundSchema = Two$inboundSchema; + /** @deprecated use `Two$outboundSchema` instead. */ + export const outboundSchema = Two$outboundSchema; + /** @deprecated use `Two$Outbound` instead. */ + export type Outbound = Two$Outbound; +} + +export function twoToJSON(two: Two): string { + return JSON.stringify(Two$outboundSchema.parse(two)); +} + +export function twoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Two$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Two' from JSON`, + ); +} + +/** @internal */ +export const One$inboundSchema: z.ZodType = z + .object({ + externalId: z.string(), + identityId: z.string().optional(), + }); + +/** @internal */ +export type One$Outbound = { + externalId: string; + identityId?: string | undefined; +}; + +/** @internal */ +export const One$outboundSchema: z.ZodType = z + .object({ + externalId: z.string(), + identityId: z.string().optional(), + }); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace One$ { + /** @deprecated use `One$inboundSchema` instead. */ + export const inboundSchema = One$inboundSchema; + /** @deprecated use `One$outboundSchema` instead. */ + export const outboundSchema = One$outboundSchema; + /** @deprecated use `One$Outbound` instead. */ + export type Outbound = One$Outbound; +} + +export function oneToJSON(one: One): string { + return JSON.stringify(One$outboundSchema.parse(one)); +} + +export function oneFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => One$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'One' from JSON`, + ); +} + +/** @internal */ +export const V2IdentitiesDeleteIdentityRequestBody$inboundSchema: z.ZodType< + V2IdentitiesDeleteIdentityRequestBody, + z.ZodTypeDef, + unknown +> = z.union([z.lazy(() => One$inboundSchema), z.lazy(() => Two$inboundSchema)]); + +/** @internal */ +export type V2IdentitiesDeleteIdentityRequestBody$Outbound = + | One$Outbound + | Two$Outbound; + +/** @internal */ +export const V2IdentitiesDeleteIdentityRequestBody$outboundSchema: z.ZodType< + V2IdentitiesDeleteIdentityRequestBody$Outbound, + z.ZodTypeDef, + V2IdentitiesDeleteIdentityRequestBody +> = z.union([ + z.lazy(() => One$outboundSchema), + z.lazy(() => Two$outboundSchema), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace V2IdentitiesDeleteIdentityRequestBody$ { + /** @deprecated use `V2IdentitiesDeleteIdentityRequestBody$inboundSchema` instead. */ + export const inboundSchema = + V2IdentitiesDeleteIdentityRequestBody$inboundSchema; + /** @deprecated use `V2IdentitiesDeleteIdentityRequestBody$outboundSchema` instead. */ + export const outboundSchema = + V2IdentitiesDeleteIdentityRequestBody$outboundSchema; + /** @deprecated use `V2IdentitiesDeleteIdentityRequestBody$Outbound` instead. */ + export type Outbound = V2IdentitiesDeleteIdentityRequestBody$Outbound; +} + +export function v2IdentitiesDeleteIdentityRequestBodyToJSON( + v2IdentitiesDeleteIdentityRequestBody: V2IdentitiesDeleteIdentityRequestBody, +): string { + return JSON.stringify( + V2IdentitiesDeleteIdentityRequestBody$outboundSchema.parse( + v2IdentitiesDeleteIdentityRequestBody, + ), + ); +} + +export function v2IdentitiesDeleteIdentityRequestBodyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + V2IdentitiesDeleteIdentityRequestBody$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'V2IdentitiesDeleteIdentityRequestBody' from JSON`, + ); +} diff --git a/src/models/components/v2identitiesdeleteidentityresponsebody.ts b/src/models/components/v2identitiesdeleteidentityresponsebody.ts new file mode 100644 index 0000000..cb5c711 --- /dev/null +++ b/src/models/components/v2identitiesdeleteidentityresponsebody.ts @@ -0,0 +1,64 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type V2IdentitiesDeleteIdentityResponseBody = {}; + +/** @internal */ +export const V2IdentitiesDeleteIdentityResponseBody$inboundSchema: z.ZodType< + V2IdentitiesDeleteIdentityResponseBody, + z.ZodTypeDef, + unknown +> = z.object({}); + +/** @internal */ +export type V2IdentitiesDeleteIdentityResponseBody$Outbound = {}; + +/** @internal */ +export const V2IdentitiesDeleteIdentityResponseBody$outboundSchema: z.ZodType< + V2IdentitiesDeleteIdentityResponseBody$Outbound, + z.ZodTypeDef, + V2IdentitiesDeleteIdentityResponseBody +> = z.object({}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace V2IdentitiesDeleteIdentityResponseBody$ { + /** @deprecated use `V2IdentitiesDeleteIdentityResponseBody$inboundSchema` instead. */ + export const inboundSchema = + V2IdentitiesDeleteIdentityResponseBody$inboundSchema; + /** @deprecated use `V2IdentitiesDeleteIdentityResponseBody$outboundSchema` instead. */ + export const outboundSchema = + V2IdentitiesDeleteIdentityResponseBody$outboundSchema; + /** @deprecated use `V2IdentitiesDeleteIdentityResponseBody$Outbound` instead. */ + export type Outbound = V2IdentitiesDeleteIdentityResponseBody$Outbound; +} + +export function v2IdentitiesDeleteIdentityResponseBodyToJSON( + v2IdentitiesDeleteIdentityResponseBody: + V2IdentitiesDeleteIdentityResponseBody, +): string { + return JSON.stringify( + V2IdentitiesDeleteIdentityResponseBody$outboundSchema.parse( + v2IdentitiesDeleteIdentityResponseBody, + ), + ); +} + +export function v2IdentitiesDeleteIdentityResponseBodyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + V2IdentitiesDeleteIdentityResponseBody$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'V2IdentitiesDeleteIdentityResponseBody' from JSON`, + ); +} diff --git a/src/sdk/identities.ts b/src/sdk/identities.ts index 0edbdb8..b6b2329 100644 --- a/src/sdk/identities.ts +++ b/src/sdk/identities.ts @@ -3,6 +3,7 @@ */ import { identitiesCreateIdentity } from "../funcs/identitiesCreateIdentity.js"; +import { identitiesDeleteIdentity } from "../funcs/identitiesDeleteIdentity.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as components from "../models/components/index.js"; import { unwrapAsync } from "../types/fp.js"; @@ -18,4 +19,15 @@ export class Identities extends ClientSDK { options, )); } + + async deleteIdentity( + request: components.V2IdentitiesDeleteIdentityRequestBody, + options?: RequestOptions, + ): Promise { + return unwrapAsync(identitiesDeleteIdentity( + this, + request, + options, + )); + } }