@inkeep/agents-manage-api 0.39.5 → 0.41.0

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.
Files changed (123) hide show
  1. package/dist/create-app.d.ts +21 -0
  2. package/dist/create-app.js +144 -0
  3. package/dist/data/agentFull.d.ts +15 -0
  4. package/dist/data/agentFull.js +84 -0
  5. package/dist/data/conversations.d.ts +77 -0
  6. package/dist/data/conversations.js +152 -0
  7. package/dist/data/db/dbClient.d.ts +6 -0
  8. package/dist/data/db/dbClient.js +17 -0
  9. package/dist/env.d.ts +61 -0
  10. package/dist/env.js +55 -0
  11. package/dist/factory.d.ts +17 -2
  12. package/dist/factory.js +35 -2
  13. package/dist/index.d.ts +163 -57
  14. package/dist/index.js +8 -5
  15. package/dist/initialization.d.ts +6 -0
  16. package/dist/initialization.js +79 -0
  17. package/dist/logger.d.ts +2 -0
  18. package/dist/logger.js +3 -0
  19. package/dist/middleware/auth.d.ts +24 -0
  20. package/dist/middleware/auth.js +64 -0
  21. package/dist/middleware/error-handler.d.ts +12 -0
  22. package/dist/middleware/error-handler.js +88 -0
  23. package/dist/middleware/require-permission.d.ts +19 -0
  24. package/dist/middleware/require-permission.js +80 -0
  25. package/dist/middleware/session-auth.d.ts +6 -0
  26. package/dist/middleware/session-auth.js +26 -0
  27. package/dist/middleware/tenant-access.d.ts +12 -0
  28. package/dist/middleware/tenant-access.js +54 -0
  29. package/dist/openapi.d.ts +7 -0
  30. package/dist/openapi.js +157 -0
  31. package/dist/routes/agent.d.ts +9 -0
  32. package/dist/routes/agent.js +244 -0
  33. package/dist/routes/agentFull.d.ts +9 -0
  34. package/dist/routes/agentFull.js +188 -0
  35. package/dist/routes/agentToolRelations.d.ts +9 -0
  36. package/dist/routes/agentToolRelations.js +284 -0
  37. package/dist/routes/apiKeys.d.ts +9 -0
  38. package/dist/routes/apiKeys.js +217 -0
  39. package/dist/routes/artifactComponents.d.ts +9 -0
  40. package/dist/routes/artifactComponents.js +206 -0
  41. package/dist/routes/cliAuth.d.ts +9 -0
  42. package/dist/routes/cliAuth.js +60 -0
  43. package/dist/routes/contextConfigs.d.ts +9 -0
  44. package/dist/routes/contextConfigs.js +175 -0
  45. package/dist/routes/conversations.d.ts +7 -0
  46. package/dist/routes/conversations.js +59 -0
  47. package/dist/routes/credentialStores.d.ts +9 -0
  48. package/dist/routes/credentialStores.js +81 -0
  49. package/dist/routes/credentials.d.ts +9 -0
  50. package/dist/routes/credentials.js +204 -0
  51. package/dist/routes/dataComponents.d.ts +9 -0
  52. package/dist/routes/dataComponents.js +188 -0
  53. package/dist/routes/externalAgents.d.ts +9 -0
  54. package/dist/routes/externalAgents.js +195 -0
  55. package/dist/routes/functionTools.d.ts +9 -0
  56. package/dist/routes/functionTools.js +252 -0
  57. package/dist/routes/functions.d.ts +9 -0
  58. package/dist/routes/functions.js +281 -0
  59. package/dist/routes/index.d.ts +7 -0
  60. package/dist/routes/index.js +54 -0
  61. package/dist/routes/invitations.d.ts +9 -0
  62. package/dist/routes/invitations.js +41 -0
  63. package/dist/routes/mcp.d.ts +7 -0
  64. package/dist/routes/mcp.js +45 -0
  65. package/dist/routes/mcpCatalog.d.ts +13 -0
  66. package/dist/routes/mcpCatalog.js +454 -0
  67. package/dist/routes/oauth.d.ts +10 -0
  68. package/dist/routes/oauth.js +314 -0
  69. package/dist/routes/playgroundToken.d.ts +9 -0
  70. package/dist/routes/playgroundToken.js +108 -0
  71. package/dist/routes/projectFull.d.ts +9 -0
  72. package/dist/routes/projectFull.js +193 -0
  73. package/dist/routes/projects.d.ts +9 -0
  74. package/dist/routes/projects.js +188 -0
  75. package/dist/routes/shared.d.ts +93 -0
  76. package/dist/routes/shared.js +44 -0
  77. package/dist/routes/signoz.d.ts +10 -0
  78. package/dist/routes/signoz.js +155 -0
  79. package/dist/routes/subAgentArtifactComponents.d.ts +9 -0
  80. package/dist/routes/subAgentArtifactComponents.js +198 -0
  81. package/dist/routes/subAgentDataComponents.d.ts +9 -0
  82. package/dist/routes/subAgentDataComponents.js +197 -0
  83. package/dist/routes/subAgentExternalAgentRelations.d.ts +9 -0
  84. package/dist/routes/subAgentExternalAgentRelations.js +213 -0
  85. package/dist/routes/subAgentRelations.d.ts +9 -0
  86. package/dist/routes/subAgentRelations.js +259 -0
  87. package/dist/routes/subAgentTeamAgentRelations.d.ts +9 -0
  88. package/dist/routes/subAgentTeamAgentRelations.js +213 -0
  89. package/dist/routes/subAgentToolRelations.d.ts +9 -0
  90. package/dist/routes/subAgentToolRelations.js +284 -0
  91. package/dist/routes/subAgents.d.ts +9 -0
  92. package/dist/routes/subAgents.js +210 -0
  93. package/dist/routes/thirdPartyMCPServers.d.ts +14 -0
  94. package/dist/routes/thirdPartyMCPServers.js +72 -0
  95. package/dist/routes/tools.d.ts +9 -0
  96. package/dist/routes/tools.js +256 -0
  97. package/dist/routes/userOrganizations.d.ts +9 -0
  98. package/dist/routes/userOrganizations.js +58 -0
  99. package/dist/sso-helpers.d.ts +20 -0
  100. package/dist/sso-helpers.js +51 -0
  101. package/dist/types/app.d.ts +47 -0
  102. package/dist/types/app.js +1 -0
  103. package/dist/utils/cors.d.ts +33 -0
  104. package/dist/utils/cors.js +98 -0
  105. package/dist/utils/oauth-service.d.ts +71 -0
  106. package/dist/utils/oauth-service.js +106 -0
  107. package/dist/utils/signoz-helpers.d.ts +9 -0
  108. package/dist/utils/signoz-helpers.js +33 -0
  109. package/dist/utils/temp-api-keys.d.ts +17 -0
  110. package/dist/utils/temp-api-keys.js +26 -0
  111. package/package.json +6 -13
  112. package/dist/chunk-VBDAOXYI.js +0 -832
  113. package/dist/chunk-VBDAOXYI.js.map +0 -1
  114. package/dist/factory2.d.ts +0 -41
  115. package/dist/factory2.d.ts.map +0 -1
  116. package/dist/factory2.js +0 -37085
  117. package/dist/factory2.js.map +0 -1
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/index.js.map +0 -1
  120. package/dist/nodefs.js +0 -27
  121. package/dist/nodefs.js.map +0 -1
  122. package/dist/opfs-ahp.js +0 -368
  123. package/dist/opfs-ahp.js.map +0 -1
@@ -0,0 +1,284 @@
1
+ import dbClient_default from "../data/db/dbClient.js";
2
+ import { requirePermission } from "../middleware/require-permission.js";
3
+ import { speakeasyOffsetLimitPagination } from "./shared.js";
4
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
5
+ import { ErrorResponseSchema, PaginationQueryParamsSchema, SubAgentToolRelationApiInsertSchema, SubAgentToolRelationApiUpdateSchema, SubAgentToolRelationListResponse, SubAgentToolRelationResponse, TenantProjectAgentIdParamsSchema, TenantProjectAgentParamsSchema, commonGetErrorResponses, createAgentToolRelation, createApiError, deleteAgentToolRelation, getAgentToolRelationByAgent, getAgentToolRelationById, getAgentToolRelationByTool, getAgentsForTool, listAgentToolRelations, updateAgentToolRelation } from "@inkeep/agents-core";
6
+
7
+ //#region src/routes/agentToolRelations.ts
8
+ const app = new OpenAPIHono();
9
+ app.use("/", async (c, next) => {
10
+ if (c.req.method === "POST") return requirePermission({ agent: ["create"] })(c, next);
11
+ return next();
12
+ });
13
+ app.use("/:id", async (c, next) => {
14
+ if (c.req.method === "PUT") return requirePermission({ agent: ["update"] })(c, next);
15
+ if (c.req.method === "DELETE") return requirePermission({ agent: ["delete"] })(c, next);
16
+ return next();
17
+ });
18
+ app.openapi(createRoute({
19
+ method: "get",
20
+ path: "/",
21
+ summary: "List Agent Tool Relations",
22
+ operationId: "list-agent-tool-relations",
23
+ tags: ["Agent Tool Relations"],
24
+ request: {
25
+ params: TenantProjectAgentParamsSchema,
26
+ query: PaginationQueryParamsSchema.extend({
27
+ subAgentId: z.string().optional(),
28
+ toolId: z.string().optional()
29
+ })
30
+ },
31
+ responses: {
32
+ 200: {
33
+ description: "List of agent tool relations retrieved successfully",
34
+ content: { "application/json": { schema: SubAgentToolRelationListResponse } }
35
+ },
36
+ ...commonGetErrorResponses
37
+ },
38
+ ...speakeasyOffsetLimitPagination
39
+ }), async (c) => {
40
+ const { tenantId, projectId, agentId } = c.req.valid("param");
41
+ const { page, limit, subAgentId, toolId } = c.req.valid("query");
42
+ let result;
43
+ if (subAgentId) {
44
+ const dbResult = await getAgentToolRelationByAgent(dbClient_default)({
45
+ scopes: {
46
+ tenantId,
47
+ projectId,
48
+ agentId,
49
+ subAgentId
50
+ },
51
+ pagination: {
52
+ page,
53
+ limit
54
+ }
55
+ });
56
+ result = {
57
+ data: dbResult.data,
58
+ pagination: dbResult.pagination
59
+ };
60
+ } else if (toolId) {
61
+ const dbResult = await getAgentToolRelationByTool(dbClient_default)({
62
+ scopes: {
63
+ tenantId,
64
+ projectId,
65
+ agentId
66
+ },
67
+ toolId,
68
+ pagination: {
69
+ page,
70
+ limit
71
+ }
72
+ });
73
+ result = {
74
+ data: dbResult.data,
75
+ pagination: dbResult.pagination
76
+ };
77
+ } else {
78
+ const dbResult = await listAgentToolRelations(dbClient_default)({
79
+ scopes: {
80
+ tenantId,
81
+ projectId,
82
+ agentId
83
+ },
84
+ pagination: {
85
+ page,
86
+ limit
87
+ }
88
+ });
89
+ result = {
90
+ data: dbResult.data,
91
+ pagination: dbResult.pagination
92
+ };
93
+ }
94
+ return c.json(result);
95
+ });
96
+ app.openapi(createRoute({
97
+ method: "get",
98
+ path: "/{id}",
99
+ summary: "Get Agent Tool Relation",
100
+ operationId: "get-agent-tool-relation",
101
+ tags: ["Agent Tool Relations"],
102
+ request: { params: TenantProjectAgentIdParamsSchema },
103
+ responses: {
104
+ 200: {
105
+ description: "Agent tool relation found",
106
+ content: { "application/json": { schema: SubAgentToolRelationResponse } }
107
+ },
108
+ ...commonGetErrorResponses
109
+ }
110
+ }), async (c) => {
111
+ const { tenantId, projectId, agentId, id } = c.req.valid("param");
112
+ const agentToolRelation = await getAgentToolRelationById(dbClient_default)({
113
+ scopes: {
114
+ tenantId,
115
+ projectId,
116
+ agentId,
117
+ subAgentId: id
118
+ },
119
+ relationId: id
120
+ });
121
+ if (!agentToolRelation) throw createApiError({
122
+ code: "not_found",
123
+ message: "Agent tool relation not found"
124
+ });
125
+ return c.json({ data: agentToolRelation });
126
+ });
127
+ app.openapi(createRoute({
128
+ method: "get",
129
+ path: "/tool/{toolId}/agents",
130
+ summary: "Get Agents for Tool",
131
+ operationId: "get-agents-for-tool",
132
+ tags: ["Agent Tool Relations"],
133
+ request: {
134
+ params: TenantProjectAgentParamsSchema.extend({ toolId: z.string() }),
135
+ query: PaginationQueryParamsSchema
136
+ },
137
+ responses: {
138
+ 200: {
139
+ description: "Agents for tool retrieved successfully",
140
+ content: { "application/json": { schema: SubAgentToolRelationListResponse } }
141
+ },
142
+ ...commonGetErrorResponses
143
+ }
144
+ }), async (c) => {
145
+ const { tenantId, projectId, agentId, toolId } = c.req.valid("param");
146
+ const { page, limit } = c.req.valid("query");
147
+ const dbResult = await getAgentsForTool(dbClient_default)({
148
+ scopes: {
149
+ tenantId,
150
+ projectId,
151
+ agentId
152
+ },
153
+ toolId,
154
+ pagination: {
155
+ page,
156
+ limit
157
+ }
158
+ });
159
+ return c.json(dbResult);
160
+ });
161
+ app.openapi(createRoute({
162
+ method: "post",
163
+ path: "/",
164
+ summary: "Create Agent Tool Relation",
165
+ operationId: "create-agent-tool-relation",
166
+ tags: ["Agent Tool Relations"],
167
+ request: {
168
+ params: TenantProjectAgentParamsSchema,
169
+ body: { content: { "application/json": { schema: SubAgentToolRelationApiInsertSchema } } }
170
+ },
171
+ responses: {
172
+ 201: {
173
+ description: "Agent tool relation created successfully",
174
+ content: { "application/json": { schema: SubAgentToolRelationResponse } }
175
+ },
176
+ ...commonGetErrorResponses
177
+ }
178
+ }), async (c) => {
179
+ const { tenantId, projectId, agentId } = c.req.valid("param");
180
+ const body = c.req.valid("json");
181
+ if ((await listAgentToolRelations(dbClient_default)({
182
+ scopes: {
183
+ tenantId,
184
+ projectId,
185
+ agentId
186
+ },
187
+ pagination: { limit: 1e3 }
188
+ })).data.some((relation) => {
189
+ const typedRelation = relation;
190
+ return typedRelation.subAgentId === body.subAgentId && typedRelation.toolId === body.toolId;
191
+ })) throw createApiError({
192
+ code: "unprocessable_entity",
193
+ message: "Agent tool relation already exists"
194
+ });
195
+ try {
196
+ const agentToolRelation = await createAgentToolRelation(dbClient_default)({
197
+ scopes: {
198
+ tenantId,
199
+ projectId,
200
+ agentId
201
+ },
202
+ data: body
203
+ });
204
+ return c.json({ data: agentToolRelation }, 201);
205
+ } catch (error) {
206
+ if (error?.cause?.code === "23503") throw createApiError({
207
+ code: "bad_request",
208
+ message: "Invalid agent ID or tool ID - referenced entity does not exist"
209
+ });
210
+ throw error;
211
+ }
212
+ });
213
+ app.openapi(createRoute({
214
+ method: "put",
215
+ path: "/{id}",
216
+ summary: "Update Agent Tool Relation",
217
+ operationId: "update-agent-tool-relation",
218
+ tags: ["Agent Tool Relations"],
219
+ request: {
220
+ params: TenantProjectAgentIdParamsSchema,
221
+ body: { content: { "application/json": { schema: SubAgentToolRelationApiUpdateSchema } } }
222
+ },
223
+ responses: {
224
+ 200: {
225
+ description: "Agent tool relation updated successfully",
226
+ content: { "application/json": { schema: SubAgentToolRelationResponse } }
227
+ },
228
+ ...commonGetErrorResponses
229
+ }
230
+ }), async (c) => {
231
+ const { tenantId, projectId, agentId, id } = c.req.valid("param");
232
+ const body = await c.req.valid("json");
233
+ if (Object.keys(body).length === 0) throw createApiError({
234
+ code: "bad_request",
235
+ message: "No fields to update"
236
+ });
237
+ const updatedSubAgentToolRelation = await updateAgentToolRelation(dbClient_default)({
238
+ scopes: {
239
+ tenantId,
240
+ projectId,
241
+ agentId
242
+ },
243
+ relationId: id,
244
+ data: body
245
+ });
246
+ if (!updatedSubAgentToolRelation) throw createApiError({
247
+ code: "not_found",
248
+ message: "Agent tool relation not found"
249
+ });
250
+ return c.json({ data: updatedSubAgentToolRelation });
251
+ });
252
+ app.openapi(createRoute({
253
+ method: "delete",
254
+ path: "/{id}",
255
+ summary: "Delete Agent Tool Relation",
256
+ operationId: "delete-agent-tool-relation",
257
+ tags: ["Agent Tool Relations"],
258
+ request: { params: TenantProjectAgentIdParamsSchema },
259
+ responses: {
260
+ 204: { description: "Agent tool relation deleted successfully" },
261
+ 404: {
262
+ description: "Agent tool relation not found",
263
+ content: { "application/json": { schema: ErrorResponseSchema } }
264
+ }
265
+ }
266
+ }), async (c) => {
267
+ const { tenantId, projectId, agentId, id } = c.req.valid("param");
268
+ if (!await deleteAgentToolRelation(dbClient_default)({
269
+ scopes: {
270
+ tenantId,
271
+ projectId,
272
+ agentId
273
+ },
274
+ relationId: id
275
+ })) throw createApiError({
276
+ code: "not_found",
277
+ message: "Agent tool relation not found"
278
+ });
279
+ return c.body(null, 204);
280
+ });
281
+ var agentToolRelations_default = app;
282
+
283
+ //#endregion
284
+ export { agentToolRelations_default as default };
@@ -0,0 +1,9 @@
1
+ import { BaseAppVariables } from "../types/app.js";
2
+ import { OpenAPIHono } from "@hono/zod-openapi";
3
+
4
+ //#region src/routes/apiKeys.d.ts
5
+ declare const app: OpenAPIHono<{
6
+ Variables: BaseAppVariables;
7
+ }, {}, "/">;
8
+ //#endregion
9
+ export { app as default };
@@ -0,0 +1,217 @@
1
+ import dbClient_default from "../data/db/dbClient.js";
2
+ import { requirePermission } from "../middleware/require-permission.js";
3
+ import { speakeasyOffsetLimitPagination } from "./shared.js";
4
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
5
+ import { ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, ApiKeyApiUpdateSchema, ApiKeyListResponse, ApiKeyResponse, ErrorResponseSchema, PaginationQueryParamsSchema, TenantProjectIdParamsSchema, TenantProjectParamsSchema, commonGetErrorResponses, createApiError, createApiKey, deleteApiKey, generateApiKey, getApiKeyById, listApiKeysPaginated, updateApiKey } from "@inkeep/agents-core";
6
+
7
+ //#region src/routes/apiKeys.ts
8
+ const app = new OpenAPIHono();
9
+ app.use("/", async (c, next) => {
10
+ if (c.req.method === "POST") return requirePermission({ api_key: ["create"] })(c, next);
11
+ return next();
12
+ });
13
+ app.use("/:id", async (c, next) => {
14
+ if (c.req.method === "PATCH") return requirePermission({ api_key: ["update"] })(c, next);
15
+ if (c.req.method === "DELETE") return requirePermission({ api_key: ["delete"] })(c, next);
16
+ return next();
17
+ });
18
+ app.openapi(createRoute({
19
+ method: "get",
20
+ path: "/",
21
+ summary: "List API Keys",
22
+ description: "List all API keys for a tenant with optional pagination",
23
+ operationId: "list-api-keys",
24
+ tags: ["API Keys"],
25
+ request: {
26
+ params: TenantProjectParamsSchema,
27
+ query: PaginationQueryParamsSchema.extend({ agentId: z.string().optional().describe("Filter by agent ID") })
28
+ },
29
+ responses: {
30
+ 200: {
31
+ description: "List of API keys retrieved successfully",
32
+ content: { "application/json": { schema: ApiKeyListResponse } }
33
+ },
34
+ ...commonGetErrorResponses
35
+ },
36
+ ...speakeasyOffsetLimitPagination
37
+ }), async (c) => {
38
+ const { tenantId, projectId } = c.req.valid("param");
39
+ const page = Number(c.req.query("page")) || 1;
40
+ const limit = Math.min(Number(c.req.query("limit")) || 10, 100);
41
+ const agentId = c.req.query("agentId");
42
+ const result = await listApiKeysPaginated(dbClient_default)({
43
+ scopes: {
44
+ tenantId,
45
+ projectId
46
+ },
47
+ pagination: {
48
+ page,
49
+ limit
50
+ },
51
+ agentId
52
+ });
53
+ const sanitizedData = result.data.map(({ keyHash, tenantId: tenantId$1, projectId: projectId$1, ...apiKey }) => apiKey);
54
+ return c.json({
55
+ data: sanitizedData,
56
+ pagination: result.pagination
57
+ });
58
+ });
59
+ app.openapi(createRoute({
60
+ method: "get",
61
+ path: "/{id}",
62
+ summary: "Get API Key",
63
+ description: "Get a specific API key by ID (does not return the actual key)",
64
+ operationId: "get-api-key-by-id",
65
+ tags: ["API Keys"],
66
+ request: { params: TenantProjectIdParamsSchema },
67
+ responses: {
68
+ 200: {
69
+ description: "API key found",
70
+ content: { "application/json": { schema: ApiKeyResponse } }
71
+ },
72
+ ...commonGetErrorResponses
73
+ }
74
+ }), async (c) => {
75
+ const { tenantId, projectId, id } = c.req.valid("param");
76
+ const apiKey = await getApiKeyById(dbClient_default)({
77
+ scopes: {
78
+ tenantId,
79
+ projectId
80
+ },
81
+ id
82
+ });
83
+ if (!apiKey || apiKey === void 0) throw createApiError({
84
+ code: "not_found",
85
+ message: "API key not found"
86
+ });
87
+ const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = apiKey;
88
+ return c.json({ data: {
89
+ ...sanitizedApiKey,
90
+ lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
91
+ expiresAt: sanitizedApiKey.expiresAt ?? null
92
+ } });
93
+ });
94
+ app.openapi(createRoute({
95
+ method: "post",
96
+ path: "/",
97
+ summary: "Create API Key",
98
+ description: "Create a new API key for an agent. Returns the full key (shown only once).",
99
+ operationId: "create-api-key",
100
+ tags: ["API Keys"],
101
+ request: {
102
+ params: TenantProjectParamsSchema,
103
+ body: { content: { "application/json": { schema: ApiKeyApiInsertSchema } } }
104
+ },
105
+ responses: {
106
+ 201: {
107
+ description: "API key created successfully",
108
+ content: { "application/json": { schema: ApiKeyApiCreationResponseSchema } }
109
+ },
110
+ ...commonGetErrorResponses
111
+ }
112
+ }), async (c) => {
113
+ const { tenantId, projectId } = c.req.valid("param");
114
+ const body = c.req.valid("json");
115
+ const { key, ...keyDataWithoutKey } = await generateApiKey();
116
+ const insertData = {
117
+ tenantId,
118
+ projectId,
119
+ name: body.name,
120
+ agentId: body.agentId,
121
+ ...keyDataWithoutKey,
122
+ expiresAt: body.expiresAt || void 0
123
+ };
124
+ try {
125
+ const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = await createApiKey(dbClient_default)(insertData);
126
+ return c.json({ data: {
127
+ apiKey: {
128
+ ...sanitizedApiKey,
129
+ lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
130
+ expiresAt: sanitizedApiKey.expiresAt ?? null
131
+ },
132
+ key
133
+ } }, 201);
134
+ } catch (error) {
135
+ if (error?.cause?.code === "23503") throw createApiError({
136
+ code: "bad_request",
137
+ message: "Invalid agentId - agent does not exist"
138
+ });
139
+ throw error;
140
+ }
141
+ });
142
+ app.openapi(createRoute({
143
+ method: "put",
144
+ path: "/{id}",
145
+ summary: "Update API Key",
146
+ description: "Update an API key (currently only expiration date can be changed)",
147
+ operationId: "update-api-key",
148
+ tags: ["API Keys"],
149
+ request: {
150
+ params: TenantProjectIdParamsSchema,
151
+ body: { content: { "application/json": { schema: ApiKeyApiUpdateSchema } } }
152
+ },
153
+ responses: {
154
+ 200: {
155
+ description: "API key updated successfully",
156
+ content: { "application/json": { schema: ApiKeyResponse } }
157
+ },
158
+ ...commonGetErrorResponses
159
+ }
160
+ }), async (c) => {
161
+ const { tenantId, projectId, id } = c.req.valid("param");
162
+ const body = c.req.valid("json");
163
+ const updatedApiKey = await updateApiKey(dbClient_default)({
164
+ scopes: {
165
+ tenantId,
166
+ projectId
167
+ },
168
+ id,
169
+ data: {
170
+ expiresAt: body.expiresAt,
171
+ name: body.name
172
+ }
173
+ });
174
+ if (!updatedApiKey) throw createApiError({
175
+ code: "not_found",
176
+ message: "API key not found"
177
+ });
178
+ const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = updatedApiKey;
179
+ return c.json({ data: {
180
+ ...sanitizedApiKey,
181
+ lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
182
+ expiresAt: sanitizedApiKey.expiresAt ?? null
183
+ } });
184
+ });
185
+ app.openapi(createRoute({
186
+ method: "delete",
187
+ path: "/{id}",
188
+ summary: "Delete API Key",
189
+ description: "Delete an API key permanently",
190
+ operationId: "delete-api-key",
191
+ tags: ["API Keys"],
192
+ request: { params: TenantProjectIdParamsSchema },
193
+ responses: {
194
+ 204: { description: "API key deleted successfully" },
195
+ 404: {
196
+ description: "API key not found",
197
+ content: { "application/json": { schema: ErrorResponseSchema } }
198
+ }
199
+ }
200
+ }), async (c) => {
201
+ const { tenantId, projectId, id } = c.req.valid("param");
202
+ if (!await deleteApiKey(dbClient_default)({
203
+ scopes: {
204
+ tenantId,
205
+ projectId
206
+ },
207
+ id
208
+ })) throw createApiError({
209
+ code: "not_found",
210
+ message: "API key not found"
211
+ });
212
+ return c.body(null, 204);
213
+ });
214
+ var apiKeys_default = app;
215
+
216
+ //#endregion
217
+ export { apiKeys_default as default };
@@ -0,0 +1,9 @@
1
+ import { BaseAppVariables } from "../types/app.js";
2
+ import { OpenAPIHono } from "@hono/zod-openapi";
3
+
4
+ //#region src/routes/artifactComponents.d.ts
5
+ declare const app: OpenAPIHono<{
6
+ Variables: BaseAppVariables;
7
+ }, {}, "/">;
8
+ //#endregion
9
+ export { app as default };