@unkey/api 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -6
- package/bin/mcp-server.js +568 -166
- package/bin/mcp-server.js.map +23 -11
- package/dist/commonjs/funcs/keysMigrateKeys.d.ts +23 -0
- package/dist/commonjs/funcs/keysMigrateKeys.d.ts.map +1 -0
- package/dist/commonjs/funcs/keysMigrateKeys.js +133 -0
- package/dist/commonjs/funcs/keysMigrateKeys.js.map +1 -0
- package/dist/commonjs/funcs/ratelimitLimit.d.ts +0 -4
- package/dist/commonjs/funcs/ratelimitLimit.d.ts.map +1 -1
- package/dist/commonjs/funcs/ratelimitLimit.js +0 -4
- package/dist/commonjs/funcs/ratelimitLimit.js.map +1 -1
- package/dist/commonjs/funcs/ratelimitMultiLimit.d.ts +28 -0
- package/dist/commonjs/funcs/ratelimitMultiLimit.d.ts.map +1 -0
- package/dist/commonjs/funcs/ratelimitMultiLimit.js +139 -0
- package/dist/commonjs/funcs/ratelimitMultiLimit.js.map +1 -0
- package/dist/commonjs/lib/config.d.ts +3 -3
- package/dist/commonjs/lib/config.js +3 -3
- package/dist/commonjs/mcp-server/mcp-server.js +1 -1
- package/dist/commonjs/mcp-server/server.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/server.js +5 -1
- package/dist/commonjs/mcp-server/server.js.map +1 -1
- package/dist/commonjs/mcp-server/tools/keysMigrateKeys.d.ts +8 -0
- package/dist/commonjs/mcp-server/tools/keysMigrateKeys.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/keysMigrateKeys.js +70 -0
- package/dist/commonjs/mcp-server/tools/keysMigrateKeys.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.js +0 -4
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.js.map +1 -1
- package/dist/commonjs/mcp-server/tools/ratelimitMultiLimit.d.ts +9 -0
- package/dist/commonjs/mcp-server/tools/ratelimitMultiLimit.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitMultiLimit.js +76 -0
- package/dist/commonjs/mcp-server/tools/ratelimitMultiLimit.js.map +1 -0
- package/dist/commonjs/models/components/index.d.ts +8 -0
- package/dist/commonjs/models/components/index.d.ts.map +1 -1
- package/dist/commonjs/models/components/index.js +8 -0
- package/dist/commonjs/models/components/index.js.map +1 -1
- package/dist/commonjs/models/components/v2keysmigratekeydata.d.ts +113 -0
- package/dist/commonjs/models/components/v2keysmigratekeydata.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeydata.js +78 -0
- package/dist/commonjs/models/components/v2keysmigratekeydata.js.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysmigration.d.ts +25 -0
- package/dist/commonjs/models/components/v2keysmigratekeysmigration.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysmigration.js +60 -0
- package/dist/commonjs/models/components/v2keysmigratekeysmigration.js.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysrequestbody.d.ts +28 -0
- package/dist/commonjs/models/components/v2keysmigratekeysrequestbody.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysrequestbody.js +63 -0
- package/dist/commonjs/models/components/v2keysmigratekeysrequestbody.js.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsebody.d.ts +24 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsebody.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsebody.js +62 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsebody.js.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsedata.d.ts +26 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsedata.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsedata.js +61 -0
- package/dist/commonjs/models/components/v2keysmigratekeysresponsedata.js.map +1 -0
- package/dist/commonjs/models/components/v2keysverifykeyrequestbody.d.ts +5 -0
- package/dist/commonjs/models/components/v2keysverifykeyrequestbody.d.ts.map +1 -1
- package/dist/commonjs/models/components/v2keysverifykeyrequestbody.js +2 -0
- package/dist/commonjs/models/components/v2keysverifykeyrequestbody.js.map +1 -1
- package/dist/commonjs/models/components/v2keysverifykeyresponsedata.d.ts +3 -3
- package/dist/commonjs/models/components/v2ratelimitmultilimitcheck.d.ts +84 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitcheck.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitcheck.js +70 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitcheck.js.map +1 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsebody.d.ts +27 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsebody.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsebody.js +62 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsebody.js.map +1 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsedata.d.ts +33 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsedata.d.ts.map +1 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsedata.js +61 -0
- package/dist/commonjs/models/components/v2ratelimitmultilimitresponsedata.js.map +1 -0
- package/dist/commonjs/sdk/keys.d.ts +12 -0
- package/dist/commonjs/sdk/keys.d.ts.map +1 -1
- package/dist/commonjs/sdk/keys.js +15 -0
- package/dist/commonjs/sdk/keys.js.map +1 -1
- package/dist/commonjs/sdk/ratelimit.d.ts +17 -4
- package/dist/commonjs/sdk/ratelimit.d.ts.map +1 -1
- package/dist/commonjs/sdk/ratelimit.js +20 -4
- package/dist/commonjs/sdk/ratelimit.js.map +1 -1
- package/dist/commonjs/types/enums.d.ts +10 -6
- package/dist/commonjs/types/enums.d.ts.map +1 -1
- package/dist/commonjs/types/enums.js +76 -2
- package/dist/commonjs/types/enums.js.map +1 -1
- package/dist/commonjs/types/index.d.ts +0 -1
- package/dist/commonjs/types/index.d.ts.map +1 -1
- package/dist/commonjs/types/index.js +1 -3
- package/dist/commonjs/types/index.js.map +1 -1
- package/dist/esm/funcs/keysMigrateKeys.d.ts +23 -0
- package/dist/esm/funcs/keysMigrateKeys.d.ts.map +1 -0
- package/dist/esm/funcs/keysMigrateKeys.js +97 -0
- package/dist/esm/funcs/keysMigrateKeys.js.map +1 -0
- package/dist/esm/funcs/ratelimitLimit.d.ts +0 -4
- package/dist/esm/funcs/ratelimitLimit.d.ts.map +1 -1
- package/dist/esm/funcs/ratelimitLimit.js +0 -4
- package/dist/esm/funcs/ratelimitLimit.js.map +1 -1
- package/dist/esm/funcs/ratelimitMultiLimit.d.ts +28 -0
- package/dist/esm/funcs/ratelimitMultiLimit.d.ts.map +1 -0
- package/dist/esm/funcs/ratelimitMultiLimit.js +103 -0
- package/dist/esm/funcs/ratelimitMultiLimit.js.map +1 -0
- package/dist/esm/lib/config.d.ts +3 -3
- package/dist/esm/lib/config.js +3 -3
- package/dist/esm/mcp-server/mcp-server.js +1 -1
- package/dist/esm/mcp-server/server.d.ts.map +1 -1
- package/dist/esm/mcp-server/server.js +5 -1
- package/dist/esm/mcp-server/server.js.map +1 -1
- package/dist/esm/mcp-server/tools/keysMigrateKeys.d.ts +8 -0
- package/dist/esm/mcp-server/tools/keysMigrateKeys.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/keysMigrateKeys.js +34 -0
- package/dist/esm/mcp-server/tools/keysMigrateKeys.js.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitLimit.d.ts.map +1 -1
- package/dist/esm/mcp-server/tools/ratelimitLimit.js +0 -4
- package/dist/esm/mcp-server/tools/ratelimitLimit.js.map +1 -1
- package/dist/esm/mcp-server/tools/ratelimitMultiLimit.d.ts +9 -0
- package/dist/esm/mcp-server/tools/ratelimitMultiLimit.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitMultiLimit.js +40 -0
- package/dist/esm/mcp-server/tools/ratelimitMultiLimit.js.map +1 -0
- package/dist/esm/models/components/index.d.ts +8 -0
- package/dist/esm/models/components/index.d.ts.map +1 -1
- package/dist/esm/models/components/index.js +8 -0
- package/dist/esm/models/components/index.js.map +1 -1
- package/dist/esm/models/components/v2keysmigratekeydata.d.ts +113 -0
- package/dist/esm/models/components/v2keysmigratekeydata.d.ts.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeydata.js +40 -0
- package/dist/esm/models/components/v2keysmigratekeydata.js.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysmigration.d.ts +25 -0
- package/dist/esm/models/components/v2keysmigratekeysmigration.d.ts.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysmigration.js +22 -0
- package/dist/esm/models/components/v2keysmigratekeysmigration.js.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysrequestbody.d.ts +28 -0
- package/dist/esm/models/components/v2keysmigratekeysrequestbody.d.ts.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysrequestbody.js +25 -0
- package/dist/esm/models/components/v2keysmigratekeysrequestbody.js.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsebody.d.ts +24 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsebody.d.ts.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsebody.js +24 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsebody.js.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsedata.d.ts +26 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsedata.d.ts.map +1 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsedata.js +23 -0
- package/dist/esm/models/components/v2keysmigratekeysresponsedata.js.map +1 -0
- package/dist/esm/models/components/v2keysverifykeyrequestbody.d.ts +5 -0
- package/dist/esm/models/components/v2keysverifykeyrequestbody.d.ts.map +1 -1
- package/dist/esm/models/components/v2keysverifykeyrequestbody.js +2 -0
- package/dist/esm/models/components/v2keysverifykeyrequestbody.js.map +1 -1
- package/dist/esm/models/components/v2keysverifykeyresponsedata.d.ts +3 -3
- package/dist/esm/models/components/v2ratelimitmultilimitcheck.d.ts +84 -0
- package/dist/esm/models/components/v2ratelimitmultilimitcheck.d.ts.map +1 -0
- package/dist/esm/models/components/v2ratelimitmultilimitcheck.js +32 -0
- package/dist/esm/models/components/v2ratelimitmultilimitcheck.js.map +1 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsebody.d.ts +27 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsebody.d.ts.map +1 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsebody.js +24 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsebody.js.map +1 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsedata.d.ts +33 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsedata.d.ts.map +1 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsedata.js +23 -0
- package/dist/esm/models/components/v2ratelimitmultilimitresponsedata.js.map +1 -0
- package/dist/esm/sdk/keys.d.ts +12 -0
- package/dist/esm/sdk/keys.d.ts.map +1 -1
- package/dist/esm/sdk/keys.js +15 -0
- package/dist/esm/sdk/keys.js.map +1 -1
- package/dist/esm/sdk/ratelimit.d.ts +17 -4
- package/dist/esm/sdk/ratelimit.d.ts.map +1 -1
- package/dist/esm/sdk/ratelimit.js +20 -4
- package/dist/esm/sdk/ratelimit.js.map +1 -1
- package/dist/esm/types/enums.d.ts +10 -6
- package/dist/esm/types/enums.d.ts.map +1 -1
- package/dist/esm/types/enums.js +38 -1
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/index.d.ts +0 -1
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/index.js +0 -1
- package/dist/esm/types/index.js.map +1 -1
- package/examples/package-lock.json +1 -1
- package/jsr.json +1 -1
- package/package.json +1 -1
- package/src/funcs/keysMigrateKeys.ts +201 -0
- package/src/funcs/ratelimitLimit.ts +0 -4
- package/src/funcs/ratelimitMultiLimit.ts +213 -0
- package/src/lib/config.ts +3 -3
- package/src/mcp-server/mcp-server.ts +1 -1
- package/src/mcp-server/server.ts +5 -1
- package/src/mcp-server/tools/keysMigrateKeys.ts +43 -0
- package/src/mcp-server/tools/ratelimitLimit.ts +0 -4
- package/src/mcp-server/tools/ratelimitMultiLimit.ts +49 -0
- package/src/models/components/index.ts +8 -0
- package/src/models/components/v2keysmigratekeydata.ts +171 -0
- package/src/models/components/v2keysmigratekeysmigration.ts +61 -0
- package/src/models/components/v2keysmigratekeysrequestbody.ts +73 -0
- package/src/models/components/v2keysmigratekeysresponsebody.ts +72 -0
- package/src/models/components/v2keysmigratekeysresponsedata.ts +69 -0
- package/src/models/components/v2keysverifykeyrequestbody.ts +7 -0
- package/src/models/components/v2keysverifykeyresponsedata.ts +3 -3
- package/src/models/components/v2ratelimitmultilimitcheck.ts +130 -0
- package/src/models/components/v2ratelimitmultilimitresponsebody.ts +75 -0
- package/src/models/components/v2ratelimitmultilimitresponsedata.ts +76 -0
- package/src/sdk/keys.ts +23 -0
- package/src/sdk/ratelimit.ts +28 -4
- package/src/types/enums.ts +55 -6
- package/src/types/index.ts +0 -1
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v3";
|
|
6
|
+
import { UnkeyCore } from "../core.js";
|
|
7
|
+
import { encodeJSON } from "../lib/encodings.js";
|
|
8
|
+
import * as M from "../lib/matchers.js";
|
|
9
|
+
import { compactMap } from "../lib/primitives.js";
|
|
10
|
+
import { safeParse } from "../lib/schemas.js";
|
|
11
|
+
import { RequestOptions } from "../lib/sdks.js";
|
|
12
|
+
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
|
|
13
|
+
import { pathToFunc } from "../lib/url.js";
|
|
14
|
+
import * as components from "../models/components/index.js";
|
|
15
|
+
import {
|
|
16
|
+
ConnectionError,
|
|
17
|
+
InvalidRequestError,
|
|
18
|
+
RequestAbortedError,
|
|
19
|
+
RequestTimeoutError,
|
|
20
|
+
UnexpectedClientError,
|
|
21
|
+
} from "../models/errors/httpclienterrors.js";
|
|
22
|
+
import * as errors from "../models/errors/index.js";
|
|
23
|
+
import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
|
|
24
|
+
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
|
|
25
|
+
import { UnkeyError } from "../models/errors/unkeyerror.js";
|
|
26
|
+
import { APICall, APIPromise } from "../types/async.js";
|
|
27
|
+
import { Result } from "../types/fp.js";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Apply multiple rate limit checks
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* Check and enforce multiple rate limits in a single request for any identifiers (user IDs, IP addresses, API clients, etc.).
|
|
34
|
+
*
|
|
35
|
+
* Use this to efficiently check multiple rate limits at once. Each rate limit check is independent and returns its own result with a top-level `passed` indicator showing if all checks succeeded.
|
|
36
|
+
*
|
|
37
|
+
* **Response Codes**: Rate limit checks return HTTP 200 regardless of whether limits are exceeded - check the `passed` field to see if all limits passed, or the `success` field in each individual result. 4xx responses indicate auth, namespace existence/deletion, or validation errors (e.g., 410 Gone for deleted namespaces). 5xx responses indicate server errors.
|
|
38
|
+
*
|
|
39
|
+
* **Required Permissions**
|
|
40
|
+
*
|
|
41
|
+
* Your root key must have one of the following permissions:
|
|
42
|
+
* - `ratelimit.*.limit` (to check limits in any namespace)
|
|
43
|
+
* - `ratelimit.<namespace_id>.limit` (to check limits in all specific namespaces being checked)
|
|
44
|
+
*/
|
|
45
|
+
export function ratelimitMultiLimit(
|
|
46
|
+
client: UnkeyCore,
|
|
47
|
+
request: Array<components.V2RatelimitLimitRequestBody>,
|
|
48
|
+
options?: RequestOptions,
|
|
49
|
+
): APIPromise<
|
|
50
|
+
Result<
|
|
51
|
+
components.V2RatelimitMultiLimitResponseBody,
|
|
52
|
+
| errors.BadRequestErrorResponse
|
|
53
|
+
| errors.UnauthorizedErrorResponse
|
|
54
|
+
| errors.ForbiddenErrorResponse
|
|
55
|
+
| errors.NotFoundErrorResponse
|
|
56
|
+
| errors.GoneErrorResponse
|
|
57
|
+
| errors.InternalServerErrorResponse
|
|
58
|
+
| UnkeyError
|
|
59
|
+
| ResponseValidationError
|
|
60
|
+
| ConnectionError
|
|
61
|
+
| RequestAbortedError
|
|
62
|
+
| RequestTimeoutError
|
|
63
|
+
| InvalidRequestError
|
|
64
|
+
| UnexpectedClientError
|
|
65
|
+
| SDKValidationError
|
|
66
|
+
>
|
|
67
|
+
> {
|
|
68
|
+
return new APIPromise($do(
|
|
69
|
+
client,
|
|
70
|
+
request,
|
|
71
|
+
options,
|
|
72
|
+
));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function $do(
|
|
76
|
+
client: UnkeyCore,
|
|
77
|
+
request: Array<components.V2RatelimitLimitRequestBody>,
|
|
78
|
+
options?: RequestOptions,
|
|
79
|
+
): Promise<
|
|
80
|
+
[
|
|
81
|
+
Result<
|
|
82
|
+
components.V2RatelimitMultiLimitResponseBody,
|
|
83
|
+
| errors.BadRequestErrorResponse
|
|
84
|
+
| errors.UnauthorizedErrorResponse
|
|
85
|
+
| errors.ForbiddenErrorResponse
|
|
86
|
+
| errors.NotFoundErrorResponse
|
|
87
|
+
| errors.GoneErrorResponse
|
|
88
|
+
| errors.InternalServerErrorResponse
|
|
89
|
+
| UnkeyError
|
|
90
|
+
| ResponseValidationError
|
|
91
|
+
| ConnectionError
|
|
92
|
+
| RequestAbortedError
|
|
93
|
+
| RequestTimeoutError
|
|
94
|
+
| InvalidRequestError
|
|
95
|
+
| UnexpectedClientError
|
|
96
|
+
| SDKValidationError
|
|
97
|
+
>,
|
|
98
|
+
APICall,
|
|
99
|
+
]
|
|
100
|
+
> {
|
|
101
|
+
const parsed = safeParse(
|
|
102
|
+
request,
|
|
103
|
+
(value) =>
|
|
104
|
+
z.array(components.V2RatelimitLimitRequestBody$outboundSchema).parse(
|
|
105
|
+
value,
|
|
106
|
+
),
|
|
107
|
+
"Input validation failed",
|
|
108
|
+
);
|
|
109
|
+
if (!parsed.ok) {
|
|
110
|
+
return [parsed, { status: "invalid" }];
|
|
111
|
+
}
|
|
112
|
+
const payload = parsed.value;
|
|
113
|
+
const body = encodeJSON("body", payload, { explode: true });
|
|
114
|
+
|
|
115
|
+
const path = pathToFunc("/v2/ratelimit.multiLimit")();
|
|
116
|
+
|
|
117
|
+
const headers = new Headers(compactMap({
|
|
118
|
+
"Content-Type": "application/json",
|
|
119
|
+
Accept: "application/json",
|
|
120
|
+
}));
|
|
121
|
+
|
|
122
|
+
const secConfig = await extractSecurity(client._options.rootKey);
|
|
123
|
+
const securityInput = secConfig == null ? {} : { rootKey: secConfig };
|
|
124
|
+
const requestSecurity = resolveGlobalSecurity(securityInput);
|
|
125
|
+
|
|
126
|
+
const context = {
|
|
127
|
+
options: client._options,
|
|
128
|
+
baseURL: options?.serverURL ?? client._baseURL ?? "",
|
|
129
|
+
operationID: "ratelimit.multiLimit",
|
|
130
|
+
oAuth2Scopes: null,
|
|
131
|
+
|
|
132
|
+
resolvedSecurity: requestSecurity,
|
|
133
|
+
|
|
134
|
+
securitySource: client._options.rootKey,
|
|
135
|
+
retryConfig: options?.retries
|
|
136
|
+
|| client._options.retryConfig
|
|
137
|
+
|| {
|
|
138
|
+
strategy: "backoff",
|
|
139
|
+
backoff: {
|
|
140
|
+
initialInterval: 50,
|
|
141
|
+
maxInterval: 1000,
|
|
142
|
+
exponent: 1.5,
|
|
143
|
+
maxElapsedTime: 10000,
|
|
144
|
+
},
|
|
145
|
+
retryConnectionErrors: true,
|
|
146
|
+
}
|
|
147
|
+
|| { strategy: "none" },
|
|
148
|
+
retryCodes: options?.retryCodes || ["5XX"],
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const requestRes = client._createRequest(context, {
|
|
152
|
+
security: requestSecurity,
|
|
153
|
+
method: "POST",
|
|
154
|
+
baseURL: options?.serverURL,
|
|
155
|
+
path: path,
|
|
156
|
+
headers: headers,
|
|
157
|
+
body: body,
|
|
158
|
+
userAgent: client._options.userAgent,
|
|
159
|
+
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
|
|
160
|
+
}, options);
|
|
161
|
+
if (!requestRes.ok) {
|
|
162
|
+
return [requestRes, { status: "invalid" }];
|
|
163
|
+
}
|
|
164
|
+
const req = requestRes.value;
|
|
165
|
+
|
|
166
|
+
const doResult = await client._do(req, {
|
|
167
|
+
context,
|
|
168
|
+
errorCodes: ["400", "401", "403", "404", "410", "4XX", "500", "5XX"],
|
|
169
|
+
retryConfig: context.retryConfig,
|
|
170
|
+
retryCodes: context.retryCodes,
|
|
171
|
+
});
|
|
172
|
+
if (!doResult.ok) {
|
|
173
|
+
return [doResult, { status: "request-error", request: req }];
|
|
174
|
+
}
|
|
175
|
+
const response = doResult.value;
|
|
176
|
+
|
|
177
|
+
const responseFields = {
|
|
178
|
+
HttpMeta: { Response: response, Request: req },
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const [result] = await M.match<
|
|
182
|
+
components.V2RatelimitMultiLimitResponseBody,
|
|
183
|
+
| errors.BadRequestErrorResponse
|
|
184
|
+
| errors.UnauthorizedErrorResponse
|
|
185
|
+
| errors.ForbiddenErrorResponse
|
|
186
|
+
| errors.NotFoundErrorResponse
|
|
187
|
+
| errors.GoneErrorResponse
|
|
188
|
+
| errors.InternalServerErrorResponse
|
|
189
|
+
| UnkeyError
|
|
190
|
+
| ResponseValidationError
|
|
191
|
+
| ConnectionError
|
|
192
|
+
| RequestAbortedError
|
|
193
|
+
| RequestTimeoutError
|
|
194
|
+
| InvalidRequestError
|
|
195
|
+
| UnexpectedClientError
|
|
196
|
+
| SDKValidationError
|
|
197
|
+
>(
|
|
198
|
+
M.json(200, components.V2RatelimitMultiLimitResponseBody$inboundSchema),
|
|
199
|
+
M.jsonErr(400, errors.BadRequestErrorResponse$inboundSchema),
|
|
200
|
+
M.jsonErr(401, errors.UnauthorizedErrorResponse$inboundSchema),
|
|
201
|
+
M.jsonErr(403, errors.ForbiddenErrorResponse$inboundSchema),
|
|
202
|
+
M.jsonErr(404, errors.NotFoundErrorResponse$inboundSchema),
|
|
203
|
+
M.jsonErr(410, errors.GoneErrorResponse$inboundSchema),
|
|
204
|
+
M.jsonErr(500, errors.InternalServerErrorResponse$inboundSchema),
|
|
205
|
+
M.fail("4XX"),
|
|
206
|
+
M.fail("5XX"),
|
|
207
|
+
)(response, req, { extraFields: responseFields });
|
|
208
|
+
if (!result.ok) {
|
|
209
|
+
return [result, { status: "complete", request: req, response }];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return [result, { status: "complete", request: req, response }];
|
|
213
|
+
}
|
package/src/lib/config.ts
CHANGED
|
@@ -58,7 +58,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
|
|
|
58
58
|
export const SDK_METADATA = {
|
|
59
59
|
language: "typescript",
|
|
60
60
|
openapiDocVersion: "2.0.0",
|
|
61
|
-
sdkVersion: "2.1.
|
|
62
|
-
genVersion: "2.
|
|
63
|
-
userAgent: "speakeasy-sdk/typescript 2.1.
|
|
61
|
+
sdkVersion: "2.1.1",
|
|
62
|
+
genVersion: "2.753.1",
|
|
63
|
+
userAgent: "speakeasy-sdk/typescript 2.1.1 2.753.1 2.0.0 @unkey/api",
|
|
64
64
|
} as const;
|
package/src/mcp-server/server.ts
CHANGED
|
@@ -28,6 +28,7 @@ import { tool$keysAddRoles } from "./tools/keysAddRoles.js";
|
|
|
28
28
|
import { tool$keysCreateKey } from "./tools/keysCreateKey.js";
|
|
29
29
|
import { tool$keysDeleteKey } from "./tools/keysDeleteKey.js";
|
|
30
30
|
import { tool$keysGetKey } from "./tools/keysGetKey.js";
|
|
31
|
+
import { tool$keysMigrateKeys } from "./tools/keysMigrateKeys.js";
|
|
31
32
|
import { tool$keysRemovePermissions } from "./tools/keysRemovePermissions.js";
|
|
32
33
|
import { tool$keysRemoveRoles } from "./tools/keysRemoveRoles.js";
|
|
33
34
|
import { tool$keysRerollKey } from "./tools/keysRerollKey.js";
|
|
@@ -49,6 +50,7 @@ import { tool$ratelimitDeleteOverride } from "./tools/ratelimitDeleteOverride.js
|
|
|
49
50
|
import { tool$ratelimitGetOverride } from "./tools/ratelimitGetOverride.js";
|
|
50
51
|
import { tool$ratelimitLimit } from "./tools/ratelimitLimit.js";
|
|
51
52
|
import { tool$ratelimitListOverrides } from "./tools/ratelimitListOverrides.js";
|
|
53
|
+
import { tool$ratelimitMultiLimit } from "./tools/ratelimitMultiLimit.js";
|
|
52
54
|
import { tool$ratelimitSetOverride } from "./tools/ratelimitSetOverride.js";
|
|
53
55
|
|
|
54
56
|
export function createMCPServer(deps: {
|
|
@@ -61,7 +63,7 @@ export function createMCPServer(deps: {
|
|
|
61
63
|
}) {
|
|
62
64
|
const server = new McpServer({
|
|
63
65
|
name: "Unkey",
|
|
64
|
-
version: "2.1.
|
|
66
|
+
version: "2.1.1",
|
|
65
67
|
});
|
|
66
68
|
|
|
67
69
|
const client = new UnkeyCore({
|
|
@@ -106,6 +108,7 @@ export function createMCPServer(deps: {
|
|
|
106
108
|
tool(tool$keysCreateKey);
|
|
107
109
|
tool(tool$keysDeleteKey);
|
|
108
110
|
tool(tool$keysGetKey);
|
|
111
|
+
tool(tool$keysMigrateKeys);
|
|
109
112
|
tool(tool$keysRemovePermissions);
|
|
110
113
|
tool(tool$keysRemoveRoles);
|
|
111
114
|
tool(tool$keysRerollKey);
|
|
@@ -127,6 +130,7 @@ export function createMCPServer(deps: {
|
|
|
127
130
|
tool(tool$ratelimitGetOverride);
|
|
128
131
|
tool(tool$ratelimitLimit);
|
|
129
132
|
tool(tool$ratelimitListOverrides);
|
|
133
|
+
tool(tool$ratelimitMultiLimit);
|
|
130
134
|
tool(tool$ratelimitSetOverride);
|
|
131
135
|
|
|
132
136
|
return server;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { keysMigrateKeys } from "../../funcs/keysMigrateKeys.js";
|
|
6
|
+
import * as components from "../../models/components/index.js";
|
|
7
|
+
import { formatResult, ToolDefinition } from "../tools.js";
|
|
8
|
+
|
|
9
|
+
const args = {
|
|
10
|
+
request: components.V2KeysMigrateKeysRequestBody$inboundSchema,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const tool$keysMigrateKeys: ToolDefinition<typeof args> = {
|
|
14
|
+
name: "keys-migrate-keys",
|
|
15
|
+
description: `Migrate API key(s)
|
|
16
|
+
|
|
17
|
+
Returns HTTP 200 even on partial success; hashes that could not be migrated are listed under \`data.failed\`.
|
|
18
|
+
|
|
19
|
+
**Required Permissions**
|
|
20
|
+
Your root key must have one of the following permissions for basic key information:
|
|
21
|
+
- \`api.*.create_key\` (to migrate keys to any API)
|
|
22
|
+
- \`api.<api_id>.create_key\` (to migrate keys to a specific API)
|
|
23
|
+
`,
|
|
24
|
+
args,
|
|
25
|
+
tool: async (client, args, ctx) => {
|
|
26
|
+
const [result, apiCall] = await keysMigrateKeys(
|
|
27
|
+
client,
|
|
28
|
+
args.request,
|
|
29
|
+
{ fetchOptions: { signal: ctx.signal } },
|
|
30
|
+
).$inspect();
|
|
31
|
+
|
|
32
|
+
if (!result.ok) {
|
|
33
|
+
return {
|
|
34
|
+
content: [{ type: "text", text: result.error.message }],
|
|
35
|
+
isError: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const value = result.value;
|
|
40
|
+
|
|
41
|
+
return formatResult(value, apiCall);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -25,10 +25,6 @@ Use this for rate limiting beyond API keys - limit users by ID, IPs by address,
|
|
|
25
25
|
Your root key must have one of the following permissions:
|
|
26
26
|
- \`ratelimit.*.limit\` (to check limits in any namespace)
|
|
27
27
|
- \`ratelimit.<namespace_id>.limit\` (to check limits in a specific namespace)
|
|
28
|
-
|
|
29
|
-
**Side Effects**
|
|
30
|
-
|
|
31
|
-
Records rate limit metrics for analytics and monitoring, updates rate limit counters with sliding window algorithm, and optionally triggers override matching for custom limits.
|
|
32
28
|
`,
|
|
33
29
|
args,
|
|
34
30
|
tool: async (client, args, ctx) => {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v3";
|
|
6
|
+
import { ratelimitMultiLimit } from "../../funcs/ratelimitMultiLimit.js";
|
|
7
|
+
import * as components from "../../models/components/index.js";
|
|
8
|
+
import { formatResult, ToolDefinition } from "../tools.js";
|
|
9
|
+
|
|
10
|
+
const args = {
|
|
11
|
+
request: z.array(components.V2RatelimitLimitRequestBody$inboundSchema),
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const tool$ratelimitMultiLimit: ToolDefinition<typeof args> = {
|
|
15
|
+
name: "ratelimit-multi-limit",
|
|
16
|
+
description: `Apply multiple rate limit checks
|
|
17
|
+
|
|
18
|
+
Check and enforce multiple rate limits in a single request for any identifiers (user IDs, IP addresses, API clients, etc.).
|
|
19
|
+
|
|
20
|
+
Use this to efficiently check multiple rate limits at once. Each rate limit check is independent and returns its own result with a top-level \`passed\` indicator showing if all checks succeeded.
|
|
21
|
+
|
|
22
|
+
**Response Codes**: Rate limit checks return HTTP 200 regardless of whether limits are exceeded - check the \`passed\` field to see if all limits passed, or the \`success\` field in each individual result. 4xx responses indicate auth, namespace existence/deletion, or validation errors (e.g., 410 Gone for deleted namespaces). 5xx responses indicate server errors.
|
|
23
|
+
|
|
24
|
+
**Required Permissions**
|
|
25
|
+
|
|
26
|
+
Your root key must have one of the following permissions:
|
|
27
|
+
- \`ratelimit.*.limit\` (to check limits in any namespace)
|
|
28
|
+
- \`ratelimit.<namespace_id>.limit\` (to check limits in all specific namespaces being checked)
|
|
29
|
+
`,
|
|
30
|
+
args,
|
|
31
|
+
tool: async (client, args, ctx) => {
|
|
32
|
+
const [result, apiCall] = await ratelimitMultiLimit(
|
|
33
|
+
client,
|
|
34
|
+
args.request,
|
|
35
|
+
{ fetchOptions: { signal: ctx.signal } },
|
|
36
|
+
).$inspect();
|
|
37
|
+
|
|
38
|
+
if (!result.ok) {
|
|
39
|
+
return {
|
|
40
|
+
content: [{ type: "text", text: result.error.message }],
|
|
41
|
+
isError: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const value = result.value;
|
|
46
|
+
|
|
47
|
+
return formatResult(value, apiCall);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -55,6 +55,11 @@ export * from "./v2keysdeletekeyrequestbody.js";
|
|
|
55
55
|
export * from "./v2keysdeletekeyresponsebody.js";
|
|
56
56
|
export * from "./v2keysgetkeyrequestbody.js";
|
|
57
57
|
export * from "./v2keysgetkeyresponsebody.js";
|
|
58
|
+
export * from "./v2keysmigratekeydata.js";
|
|
59
|
+
export * from "./v2keysmigratekeysmigration.js";
|
|
60
|
+
export * from "./v2keysmigratekeysrequestbody.js";
|
|
61
|
+
export * from "./v2keysmigratekeysresponsebody.js";
|
|
62
|
+
export * from "./v2keysmigratekeysresponsedata.js";
|
|
58
63
|
export * from "./v2keysremovepermissionsrequestbody.js";
|
|
59
64
|
export * from "./v2keysremovepermissionsresponsebody.js";
|
|
60
65
|
export * from "./v2keysremoverolesrequestbody.js";
|
|
@@ -103,6 +108,9 @@ export * from "./v2ratelimitlimitresponsebody.js";
|
|
|
103
108
|
export * from "./v2ratelimitlimitresponsedata.js";
|
|
104
109
|
export * from "./v2ratelimitlistoverridesrequestbody.js";
|
|
105
110
|
export * from "./v2ratelimitlistoverridesresponsebody.js";
|
|
111
|
+
export * from "./v2ratelimitmultilimitcheck.js";
|
|
112
|
+
export * from "./v2ratelimitmultilimitresponsebody.js";
|
|
113
|
+
export * from "./v2ratelimitmultilimitresponsedata.js";
|
|
106
114
|
export * from "./v2ratelimitsetoverriderequestbody.js";
|
|
107
115
|
export * from "./v2ratelimitsetoverrideresponsebody.js";
|
|
108
116
|
export * from "./v2ratelimitsetoverrideresponsedata.js";
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v3";
|
|
6
|
+
import { safeParse } from "../../lib/schemas.js";
|
|
7
|
+
import { Result as SafeParseResult } from "../../types/fp.js";
|
|
8
|
+
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
|
|
9
|
+
import {
|
|
10
|
+
KeyCreditsData,
|
|
11
|
+
KeyCreditsData$inboundSchema,
|
|
12
|
+
KeyCreditsData$Outbound,
|
|
13
|
+
KeyCreditsData$outboundSchema,
|
|
14
|
+
} from "./keycreditsdata.js";
|
|
15
|
+
import {
|
|
16
|
+
RatelimitRequest,
|
|
17
|
+
RatelimitRequest$inboundSchema,
|
|
18
|
+
RatelimitRequest$Outbound,
|
|
19
|
+
RatelimitRequest$outboundSchema,
|
|
20
|
+
} from "./ratelimitrequest.js";
|
|
21
|
+
|
|
22
|
+
export type V2KeysMigrateKeyData = {
|
|
23
|
+
/**
|
|
24
|
+
* The current hash of the key on your side
|
|
25
|
+
*/
|
|
26
|
+
hash: string;
|
|
27
|
+
/**
|
|
28
|
+
* Sets a human-readable identifier for internal organization and dashboard display.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* Never exposed to end users, only visible in management interfaces and API responses.
|
|
32
|
+
* Avoid generic names like "API Key" when managing multiple keys for the same user or service.
|
|
33
|
+
*/
|
|
34
|
+
name?: string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Links this key to a user or entity in your system using your own identifier.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* Returned during verification to identify the key owner without additional database lookups.
|
|
40
|
+
* Essential for user-specific analytics, billing, and multi-tenant key management.
|
|
41
|
+
* Use your primary user ID, organization ID, or tenant ID for best results.
|
|
42
|
+
* Accepts letters, numbers, underscores, dots, and hyphens for flexible identifier formats.
|
|
43
|
+
*/
|
|
44
|
+
externalId?: string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Stores arbitrary JSON metadata returned during key verification for contextual information.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* Eliminates additional database lookups during verification, improving performance for stateless services.
|
|
50
|
+
* Avoid storing sensitive data here as it's returned in verification responses.
|
|
51
|
+
* Large metadata objects increase verification latency and should stay under 10KB total size.
|
|
52
|
+
*/
|
|
53
|
+
meta?: { [k: string]: any } | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Assigns existing roles to this key for permission management through role-based access control.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* Roles must already exist in your workspace before assignment.
|
|
59
|
+
* During verification, all permissions from assigned roles are checked against requested permissions.
|
|
60
|
+
* Roles provide a convenient way to group permissions and apply consistent access patterns across multiple keys.
|
|
61
|
+
*/
|
|
62
|
+
roles?: Array<string> | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Grants specific permissions directly to this key without requiring role membership.
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* Wildcard permissions like `documents.*` grant access to all sub-permissions including `documents.read` and `documents.write`.
|
|
68
|
+
* Direct permissions supplement any permissions inherited from assigned roles.
|
|
69
|
+
*/
|
|
70
|
+
permissions?: Array<string> | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Sets when this key automatically expires as a Unix timestamp in milliseconds.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* Verification fails with code=EXPIRED immediately after this time passes.
|
|
76
|
+
* Omitting this field creates a permanent key that never expires.
|
|
77
|
+
*
|
|
78
|
+
* Avoid setting timestamps in the past as they immediately invalidate the key.
|
|
79
|
+
* Keys expire based on server time, not client time, which prevents timezone-related issues.
|
|
80
|
+
* Essential for trial periods, temporary access, and security compliance requiring key rotation.
|
|
81
|
+
*/
|
|
82
|
+
expires?: number | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Controls whether the key is active immediately upon creation.
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* When set to `false`, the key exists but all verification attempts fail with `code=DISABLED`.
|
|
88
|
+
* Useful for pre-creating keys that will be activated later or for keys requiring manual approval.
|
|
89
|
+
* Most keys should be created with `enabled=true` for immediate use.
|
|
90
|
+
*/
|
|
91
|
+
enabled?: boolean | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Credit configuration and remaining balance for this key.
|
|
94
|
+
*/
|
|
95
|
+
credits?: KeyCreditsData | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Defines time-based rate limits that protect against abuse by controlling request frequency.
|
|
98
|
+
*
|
|
99
|
+
* @remarks
|
|
100
|
+
* Unlike credits which track total usage, rate limits reset automatically after each window expires.
|
|
101
|
+
* Multiple rate limits can control different operation types with separate thresholds and windows.
|
|
102
|
+
* Essential for preventing API abuse while maintaining good performance for legitimate usage.
|
|
103
|
+
*/
|
|
104
|
+
ratelimits?: Array<RatelimitRequest> | undefined;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/** @internal */
|
|
108
|
+
export const V2KeysMigrateKeyData$inboundSchema: z.ZodType<
|
|
109
|
+
V2KeysMigrateKeyData,
|
|
110
|
+
z.ZodTypeDef,
|
|
111
|
+
unknown
|
|
112
|
+
> = z.object({
|
|
113
|
+
hash: z.string(),
|
|
114
|
+
name: z.string().optional(),
|
|
115
|
+
externalId: z.string().optional(),
|
|
116
|
+
meta: z.record(z.any()).optional(),
|
|
117
|
+
roles: z.array(z.string()).optional(),
|
|
118
|
+
permissions: z.array(z.string()).optional(),
|
|
119
|
+
expires: z.number().int().optional(),
|
|
120
|
+
enabled: z.boolean().default(true),
|
|
121
|
+
credits: KeyCreditsData$inboundSchema.optional(),
|
|
122
|
+
ratelimits: z.array(RatelimitRequest$inboundSchema).optional(),
|
|
123
|
+
});
|
|
124
|
+
/** @internal */
|
|
125
|
+
export type V2KeysMigrateKeyData$Outbound = {
|
|
126
|
+
hash: string;
|
|
127
|
+
name?: string | undefined;
|
|
128
|
+
externalId?: string | undefined;
|
|
129
|
+
meta?: { [k: string]: any } | undefined;
|
|
130
|
+
roles?: Array<string> | undefined;
|
|
131
|
+
permissions?: Array<string> | undefined;
|
|
132
|
+
expires?: number | undefined;
|
|
133
|
+
enabled: boolean;
|
|
134
|
+
credits?: KeyCreditsData$Outbound | undefined;
|
|
135
|
+
ratelimits?: Array<RatelimitRequest$Outbound> | undefined;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/** @internal */
|
|
139
|
+
export const V2KeysMigrateKeyData$outboundSchema: z.ZodType<
|
|
140
|
+
V2KeysMigrateKeyData$Outbound,
|
|
141
|
+
z.ZodTypeDef,
|
|
142
|
+
V2KeysMigrateKeyData
|
|
143
|
+
> = z.object({
|
|
144
|
+
hash: z.string(),
|
|
145
|
+
name: z.string().optional(),
|
|
146
|
+
externalId: z.string().optional(),
|
|
147
|
+
meta: z.record(z.any()).optional(),
|
|
148
|
+
roles: z.array(z.string()).optional(),
|
|
149
|
+
permissions: z.array(z.string()).optional(),
|
|
150
|
+
expires: z.number().int().optional(),
|
|
151
|
+
enabled: z.boolean().default(true),
|
|
152
|
+
credits: KeyCreditsData$outboundSchema.optional(),
|
|
153
|
+
ratelimits: z.array(RatelimitRequest$outboundSchema).optional(),
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
export function v2KeysMigrateKeyDataToJSON(
|
|
157
|
+
v2KeysMigrateKeyData: V2KeysMigrateKeyData,
|
|
158
|
+
): string {
|
|
159
|
+
return JSON.stringify(
|
|
160
|
+
V2KeysMigrateKeyData$outboundSchema.parse(v2KeysMigrateKeyData),
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
export function v2KeysMigrateKeyDataFromJSON(
|
|
164
|
+
jsonString: string,
|
|
165
|
+
): SafeParseResult<V2KeysMigrateKeyData, SDKValidationError> {
|
|
166
|
+
return safeParse(
|
|
167
|
+
jsonString,
|
|
168
|
+
(x) => V2KeysMigrateKeyData$inboundSchema.parse(JSON.parse(x)),
|
|
169
|
+
`Failed to parse 'V2KeysMigrateKeyData' from JSON`,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v3";
|
|
6
|
+
import { safeParse } from "../../lib/schemas.js";
|
|
7
|
+
import { Result as SafeParseResult } from "../../types/fp.js";
|
|
8
|
+
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
|
|
9
|
+
|
|
10
|
+
export type V2KeysMigrateKeysMigration = {
|
|
11
|
+
/**
|
|
12
|
+
* The hash provided in the migration request
|
|
13
|
+
*/
|
|
14
|
+
hash: string;
|
|
15
|
+
/**
|
|
16
|
+
* The unique identifier for this key in Unkey's system. This is NOT the actual API key, but a reference ID used for management operations like updating or deleting the key. Store this ID in your database to reference the key later. This ID is not sensitive and can be logged or displayed in dashboards.
|
|
17
|
+
*/
|
|
18
|
+
keyId: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
export const V2KeysMigrateKeysMigration$inboundSchema: z.ZodType<
|
|
23
|
+
V2KeysMigrateKeysMigration,
|
|
24
|
+
z.ZodTypeDef,
|
|
25
|
+
unknown
|
|
26
|
+
> = z.object({
|
|
27
|
+
hash: z.string(),
|
|
28
|
+
keyId: z.string(),
|
|
29
|
+
});
|
|
30
|
+
/** @internal */
|
|
31
|
+
export type V2KeysMigrateKeysMigration$Outbound = {
|
|
32
|
+
hash: string;
|
|
33
|
+
keyId: string;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
37
|
+
export const V2KeysMigrateKeysMigration$outboundSchema: z.ZodType<
|
|
38
|
+
V2KeysMigrateKeysMigration$Outbound,
|
|
39
|
+
z.ZodTypeDef,
|
|
40
|
+
V2KeysMigrateKeysMigration
|
|
41
|
+
> = z.object({
|
|
42
|
+
hash: z.string(),
|
|
43
|
+
keyId: z.string(),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export function v2KeysMigrateKeysMigrationToJSON(
|
|
47
|
+
v2KeysMigrateKeysMigration: V2KeysMigrateKeysMigration,
|
|
48
|
+
): string {
|
|
49
|
+
return JSON.stringify(
|
|
50
|
+
V2KeysMigrateKeysMigration$outboundSchema.parse(v2KeysMigrateKeysMigration),
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
export function v2KeysMigrateKeysMigrationFromJSON(
|
|
54
|
+
jsonString: string,
|
|
55
|
+
): SafeParseResult<V2KeysMigrateKeysMigration, SDKValidationError> {
|
|
56
|
+
return safeParse(
|
|
57
|
+
jsonString,
|
|
58
|
+
(x) => V2KeysMigrateKeysMigration$inboundSchema.parse(JSON.parse(x)),
|
|
59
|
+
`Failed to parse 'V2KeysMigrateKeysMigration' from JSON`,
|
|
60
|
+
);
|
|
61
|
+
}
|