From 4786fc3a315654bd65bdc6fd494e544d7b8d1ca8 Mon Sep 17 00:00:00 2001 From: rinseaid Date: Sun, 3 May 2026 13:37:47 -0400 Subject: [PATCH 01/11] Auto-create roles referenced in blueprints When a blueprint references a role that doesn't exist, create it automatically with default permissions (getOrg, getResource, listResources) instead of throwing an error or silently dropping the association. --- server/lib/blueprints/clientResources.ts | 54 +++++++++++++++++++++--- server/lib/blueprints/proxyResources.ts | 18 +++++++- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/server/lib/blueprints/clientResources.ts b/server/lib/blueprints/clientResources.ts index 1b2ec2ef7..9049bc3be 100644 --- a/server/lib/blueprints/clientResources.ts +++ b/server/lib/blueprints/clientResources.ts @@ -3,6 +3,7 @@ import { clientSiteResources, domains, orgDomains, + roleActions, roles, roleSiteResources, Site, @@ -19,6 +20,7 @@ import { sites } from "@server/db"; import { eq, and, ne, inArray, or, isNotNull } from "drizzle-orm"; import { Config } from "./types"; import logger from "@server/logger"; +import { defaultRoleAllowedActions } from "@server/routers/role/createRole"; import { getNextAvailableAliasAddress } from "../ip"; import { createCertificate } from "#dynamic/routers/certificates/createCertificate"; @@ -335,8 +337,7 @@ export async function updateClientResources( } if (resourceData.roles.length > 0) { - // Re-add specified roles but we need to get the roleIds from the role name in the array - const rolesToUpdate = await trx + const existingRoles = await trx .select() .from(roles) .where( @@ -346,7 +347,28 @@ export async function updateClientResources( ) ); - const roleIds = rolesToUpdate.map((role) => role.roleId); + const foundNames = new Set(existingRoles.map((r) => r.name)); + const missingNames = resourceData.roles.filter( + (n) => !foundNames.has(n) + ); + + for (const name of missingNames) { + const [created] = await trx + .insert(roles) + .values({ name, orgId }) + .returning(); + await trx.insert(roleActions).values( + defaultRoleAllowedActions.map((action) => ({ + roleId: created.roleId, + actionId: action, + orgId + })) + ); + existingRoles.push(created); + logger.info(`Auto-created role "${name}" in org ${orgId} from blueprint`); + } + + const roleIds = existingRoles.map((role) => role.roleId); await trx .insert(roleSiteResources) @@ -447,8 +469,7 @@ export async function updateClientResources( }); if (resourceData.roles.length > 0) { - // get roleIds from role names - const rolesToUpdate = await trx + const existingRoles = await trx .select() .from(roles) .where( @@ -458,7 +479,28 @@ export async function updateClientResources( ) ); - const roleIds = rolesToUpdate.map((role) => role.roleId); + const foundNames = new Set(existingRoles.map((r) => r.name)); + const missingNames = resourceData.roles.filter( + (n) => !foundNames.has(n) + ); + + for (const name of missingNames) { + const [created] = await trx + .insert(roles) + .values({ name, orgId }) + .returning(); + await trx.insert(roleActions).values( + defaultRoleAllowedActions.map((action) => ({ + roleId: created.roleId, + actionId: action, + orgId + })) + ); + existingRoles.push(created); + logger.info(`Auto-created role "${name}" in org ${orgId} from blueprint`); + } + + const roleIds = existingRoles.map((role) => role.roleId); await trx .insert(roleSiteResources) diff --git a/server/lib/blueprints/proxyResources.ts b/server/lib/blueprints/proxyResources.ts index ba93bc46a..e98af003e 100644 --- a/server/lib/blueprints/proxyResources.ts +++ b/server/lib/blueprints/proxyResources.ts @@ -8,6 +8,7 @@ import { resourcePincode, resourceRules, resourceWhitelist, + roleActions, roleResources, roles, Target, @@ -36,6 +37,7 @@ import { isValidRegionId } from "@server/db/regions"; import { isLicensedOrSubscribed } from "#dynamic/lib/isLicencedOrSubscribed"; import { fireHealthCheckUnknownAlert } from "#dynamic/lib/alerts"; import { tierMatrix } from "../billing/tierMatrix"; +import { defaultRoleAllowedActions } from "@server/routers/role/createRole"; export type ProxyResourcesResults = { proxyResource: Resource; @@ -922,14 +924,26 @@ async function syncRoleResources( .where(eq(roleResources.resourceId, resourceId)); for (const roleName of ssoRoles) { - const [role] = await trx + let [role] = await trx .select() .from(roles) .where(and(eq(roles.name, roleName), eq(roles.orgId, orgId))) .limit(1); if (!role) { - throw new Error(`Role not found: ${roleName} in org ${orgId}`); + const [created] = await trx + .insert(roles) + .values({ name: roleName, orgId }) + .returning(); + await trx.insert(roleActions).values( + defaultRoleAllowedActions.map((action) => ({ + roleId: created.roleId, + actionId: action, + orgId + })) + ); + role = created; + logger.info(`Auto-created role "${roleName}" in org ${orgId} from blueprint`); } if (role.isAdmin) { From 9cec711427d1fdf953bee668eb04e6f7dfe48a82 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 17 May 2026 06:38:44 +0000 Subject: [PATCH 02/11] Fix custom parser OpenAPI types and add structured default response schema Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/73990123-9c27-444b-bc6e-77e890a0d57c Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com> --- server/integrationApiServer.ts | 12 +++++++++--- server/lib/ip.ts | 8 +++++++- .../routers/approvals/processPendingApproval.ts | 2 +- .../routers/certificates/restartCertificate.ts | 4 ++-- .../private/routers/re-key/reGenerateClientSecret.ts | 2 +- .../private/routers/re-key/reGenerateSiteSecret.ts | 2 +- server/private/routers/user/addUserRole.ts | 2 +- server/private/routers/user/removeUserRole.ts | 2 +- server/routers/accessToken/generateAccessToken.ts | 2 +- server/routers/auth/checkResourceSession.ts | 2 +- server/routers/blueprints/getBlueprint.ts | 2 +- server/routers/client/archiveClient.ts | 2 +- server/routers/client/blockClient.ts | 2 +- server/routers/client/deleteClient.ts | 2 +- server/routers/client/unarchiveClient.ts | 2 +- server/routers/client/unblockClient.ts | 2 +- server/routers/client/updateClient.ts | 2 +- .../routers/resource/addEmailToResourceWhitelist.ts | 2 +- server/routers/resource/authWithPassword.ts | 2 +- server/routers/resource/authWithPincode.ts | 2 +- server/routers/resource/authWithWhitelist.ts | 2 +- server/routers/resource/createResourceRule.ts | 2 +- server/routers/resource/deleteResource.ts | 2 +- server/routers/resource/deleteResourceRule.ts | 4 ++-- server/routers/resource/getExchangeToken.ts | 2 +- server/routers/resource/getResourceWhitelist.ts | 2 +- server/routers/resource/listResourceRoles.ts | 2 +- server/routers/resource/listResourceRules.ts | 2 +- server/routers/resource/listResourceUsers.ts | 2 +- .../resource/removeEmailFromResourceWhitelist.ts | 2 +- server/routers/resource/setResourceHeaderAuth.ts | 2 +- server/routers/resource/setResourcePassword.ts | 2 +- server/routers/resource/setResourcePincode.ts | 2 +- server/routers/resource/setResourceRoles.ts | 2 +- server/routers/resource/setResourceUsers.ts | 2 +- server/routers/resource/setResourceWhitelist.ts | 2 +- server/routers/resource/updateResource.ts | 2 +- server/routers/resource/updateResourceRule.ts | 4 ++-- server/routers/role/addRoleAction.ts | 2 +- server/routers/role/addRoleSite.ts | 4 ++-- server/routers/role/deleteRole.ts | 4 ++-- server/routers/role/getRole.ts | 2 +- server/routers/role/listRoleActions.ts | 2 +- server/routers/role/listRoleResources.ts | 2 +- server/routers/role/listRoleSites.ts | 2 +- server/routers/role/removeRoleAction.ts | 2 +- server/routers/role/removeRoleResource.ts | 4 ++-- server/routers/role/removeRoleSite.ts | 4 ++-- server/routers/role/updateRole.ts | 2 +- server/routers/site/deleteSite.ts | 2 +- server/routers/site/listSiteRoles.ts | 2 +- server/routers/site/socketIntegration.ts | 2 +- server/routers/site/updateSite.ts | 2 +- .../siteResource/batchAddClientToSiteResources.ts | 2 +- server/routers/siteResource/createSiteResource.ts | 7 ++++++- server/routers/siteResource/deleteSiteResource.ts | 2 +- server/routers/siteResource/listSiteResources.ts | 2 +- server/routers/siteResource/updateSiteResource.ts | 9 +++++++-- server/routers/target/createTarget.ts | 2 +- server/routers/target/deleteTarget.ts | 2 +- server/routers/target/getTarget.ts | 2 +- server/routers/target/listTargets.ts | 2 +- server/routers/target/updateTarget.ts | 2 +- server/routers/user/addUserRoleLegacy.ts | 2 +- server/routers/user/addUserSite.ts | 2 +- server/routers/user/removeUserResource.ts | 2 +- 66 files changed, 98 insertions(+), 76 deletions(-) diff --git a/server/integrationApiServer.ts b/server/integrationApiServer.ts index ce029d9b5..5c6d50a85 100644 --- a/server/integrationApiServer.ts +++ b/server/integrationApiServer.ts @@ -152,11 +152,17 @@ function getOpenApiDocumentation() { if (!hasExistingResponses) { def.route.responses = { - "*": { - description: "", + "200": { + description: "Successful response", content: { "application/json": { - schema: z.object({}) + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) } } } diff --git a/server/lib/ip.ts b/server/lib/ip.ts index 9989b978f..170b63ad4 100644 --- a/server/lib/ip.ts +++ b/server/lib/ip.ts @@ -873,7 +873,13 @@ export const portRangeStringSchema = z message: 'Port range must be "*" for all ports, or a comma-separated list of ports and ranges (e.g., "80,443,8000-9000"). Ports must be between 1 and 65535, and ranges must have start <= end.' } - ); + ) + .openapi({ + type: "string", + description: + 'Port range string. Use "*" for all ports, a comma-separated list of ports, or ranges (e.g., "80,443,8000-9000"). Ports must be between 1 and 65535.', + example: "80,443,8000-9000" + }); /** * Parses a port range string into an array of port range objects diff --git a/server/private/routers/approvals/processPendingApproval.ts b/server/private/routers/approvals/processPendingApproval.ts index 39497bd6c..dce8692bc 100644 --- a/server/private/routers/approvals/processPendingApproval.ts +++ b/server/private/routers/approvals/processPendingApproval.ts @@ -24,7 +24,7 @@ import type { NextFunction, Request, Response } from "express"; const paramsSchema = z.strictObject({ orgId: z.string(), - approvalId: z.string().transform(Number).pipe(z.int().positive()) + approvalId: z.coerce.number().int().positive() }); const bodySchema = z.strictObject({ diff --git a/server/private/routers/certificates/restartCertificate.ts b/server/private/routers/certificates/restartCertificate.ts index 492aacc09..6d80c27b9 100644 --- a/server/private/routers/certificates/restartCertificate.ts +++ b/server/private/routers/certificates/restartCertificate.ts @@ -25,7 +25,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const restartCertificateParamsSchema = z.strictObject({ - certId: z.string().transform(stoi).pipe(z.int().positive()), + certId: z.coerce.number().int().positive(), orgId: z.string() }); @@ -36,7 +36,7 @@ registry.registerPath({ tags: ["Certificate"], request: { params: z.object({ - certId: z.string().transform(stoi).pipe(z.int().positive()), + certId: z.coerce.number().int().positive(), orgId: z.string() }) }, diff --git a/server/private/routers/re-key/reGenerateClientSecret.ts b/server/private/routers/re-key/reGenerateClientSecret.ts index 48ec60c51..c0c160f7e 100644 --- a/server/private/routers/re-key/reGenerateClientSecret.ts +++ b/server/private/routers/re-key/reGenerateClientSecret.ts @@ -28,7 +28,7 @@ import { OlmErrorCodes, sendOlmError } from "@server/routers/olm/error"; import { sendTerminateClient } from "@server/routers/client/terminate"; const reGenerateSecretParamsSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); const reGenerateSecretBodySchema = z.strictObject({ diff --git a/server/private/routers/re-key/reGenerateSiteSecret.ts b/server/private/routers/re-key/reGenerateSiteSecret.ts index 6abf037b2..6e69eb3f1 100644 --- a/server/private/routers/re-key/reGenerateSiteSecret.ts +++ b/server/private/routers/re-key/reGenerateSiteSecret.ts @@ -27,7 +27,7 @@ import { getAllowedIps } from "@server/routers/target/helpers"; import { disconnectClient, sendToClient } from "#private/routers/ws"; const updateSiteParamsSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); const updateSiteBodySchema = z.strictObject({ diff --git a/server/private/routers/user/addUserRole.ts b/server/private/routers/user/addUserRole.ts index 1789ca9c4..7989a6fdb 100644 --- a/server/private/routers/user/addUserRole.ts +++ b/server/private/routers/user/addUserRole.ts @@ -27,7 +27,7 @@ import { rebuildClientAssociationsFromClient } from "@server/lib/rebuildClientAs const addUserRoleParamsSchema = z.strictObject({ userId: z.string(), - roleId: z.string().transform(stoi).pipe(z.number()) + roleId: z.coerce.number() }); registry.registerPath({ diff --git a/server/private/routers/user/removeUserRole.ts b/server/private/routers/user/removeUserRole.ts index 7cd805240..382cc0508 100644 --- a/server/private/routers/user/removeUserRole.ts +++ b/server/private/routers/user/removeUserRole.ts @@ -27,7 +27,7 @@ import { rebuildClientAssociationsFromClient } from "@server/lib/rebuildClientAs const removeUserRoleParamsSchema = z.strictObject({ userId: z.string(), - roleId: z.string().transform(stoi).pipe(z.number()) + roleId: z.coerce.number() }); registry.registerPath({ diff --git a/server/routers/accessToken/generateAccessToken.ts b/server/routers/accessToken/generateAccessToken.ts index 9d0a7a7df..9181eb8de 100644 --- a/server/routers/accessToken/generateAccessToken.ts +++ b/server/routers/accessToken/generateAccessToken.ts @@ -31,7 +31,7 @@ export const generateAccessTokenBodySchema = z.strictObject({ }); export const generateAccssTokenParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type GenerateAccessTokenResponse = Omit< diff --git a/server/routers/auth/checkResourceSession.ts b/server/routers/auth/checkResourceSession.ts index 74a94a843..521869d1f 100644 --- a/server/routers/auth/checkResourceSession.ts +++ b/server/routers/auth/checkResourceSession.ts @@ -9,7 +9,7 @@ import logger from "@server/logger"; export const params = z.strictObject({ token: z.string(), - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type CheckResourceSessionParams = z.infer; diff --git a/server/routers/blueprints/getBlueprint.ts b/server/routers/blueprints/getBlueprint.ts index ea2ac2d05..f173d95fd 100644 --- a/server/routers/blueprints/getBlueprint.ts +++ b/server/routers/blueprints/getBlueprint.ts @@ -13,7 +13,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { BlueprintData } from "./types"; const getBlueprintSchema = z.strictObject({ - blueprintId: z.string().transform(stoi).pipe(z.int().positive()), + blueprintId: z.coerce.number().int().positive(), orgId: z.string() }); diff --git a/server/routers/client/archiveClient.ts b/server/routers/client/archiveClient.ts index 34b7bb912..a7cc29ebc 100644 --- a/server/routers/client/archiveClient.ts +++ b/server/routers/client/archiveClient.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const archiveClientSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/client/blockClient.ts b/server/routers/client/blockClient.ts index bd760b3da..90adab008 100644 --- a/server/routers/client/blockClient.ts +++ b/server/routers/client/blockClient.ts @@ -13,7 +13,7 @@ import { sendTerminateClient } from "./terminate"; import { OlmErrorCodes } from "../olm/error"; const blockClientSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/client/deleteClient.ts b/server/routers/client/deleteClient.ts index 378639af6..d3672b0e2 100644 --- a/server/routers/client/deleteClient.ts +++ b/server/routers/client/deleteClient.ts @@ -14,7 +14,7 @@ import { sendTerminateClient } from "./terminate"; import { OlmErrorCodes } from "../olm/error"; const deleteClientSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/client/unarchiveClient.ts b/server/routers/client/unarchiveClient.ts index 62c5c17c8..8300b90df 100644 --- a/server/routers/client/unarchiveClient.ts +++ b/server/routers/client/unarchiveClient.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const unarchiveClientSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/client/unblockClient.ts b/server/routers/client/unblockClient.ts index a16a1030a..977ff6276 100644 --- a/server/routers/client/unblockClient.ts +++ b/server/routers/client/unblockClient.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const unblockClientSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/client/updateClient.ts b/server/routers/client/updateClient.ts index 8ef01a2fc..5ff36ee8c 100644 --- a/server/routers/client/updateClient.ts +++ b/server/routers/client/updateClient.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const updateClientParamsSchema = z.strictObject({ - clientId: z.string().transform(Number).pipe(z.int().positive()) + clientId: z.coerce.number().int().positive() }); const updateClientSchema = z.strictObject({ diff --git a/server/routers/resource/addEmailToResourceWhitelist.ts b/server/routers/resource/addEmailToResourceWhitelist.ts index 27ba34699..bf1ad40dd 100644 --- a/server/routers/resource/addEmailToResourceWhitelist.ts +++ b/server/routers/resource/addEmailToResourceWhitelist.ts @@ -22,7 +22,7 @@ const addEmailToResourceWhitelistBodySchema = z.strictObject({ }); const addEmailToResourceWhitelistParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/authWithPassword.ts b/server/routers/resource/authWithPassword.ts index ecf61896b..5acb301a6 100644 --- a/server/routers/resource/authWithPassword.ts +++ b/server/routers/resource/authWithPassword.ts @@ -20,7 +20,7 @@ export const authWithPasswordBodySchema = z.strictObject({ }); export const authWithPasswordParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type AuthWithPasswordResponse = { diff --git a/server/routers/resource/authWithPincode.ts b/server/routers/resource/authWithPincode.ts index 78e132d20..5480f3d04 100644 --- a/server/routers/resource/authWithPincode.ts +++ b/server/routers/resource/authWithPincode.ts @@ -19,7 +19,7 @@ export const authWithPincodeBodySchema = z.strictObject({ }); export const authWithPincodeParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type AuthWithPincodeResponse = { diff --git a/server/routers/resource/authWithWhitelist.ts b/server/routers/resource/authWithWhitelist.ts index 6a2b7ee76..0f64cea4a 100644 --- a/server/routers/resource/authWithWhitelist.ts +++ b/server/routers/resource/authWithWhitelist.ts @@ -20,7 +20,7 @@ const authWithWhitelistBodySchema = z.strictObject({ }); const authWithWhitelistParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type AuthWithWhitelistResponse = { diff --git a/server/routers/resource/createResourceRule.ts b/server/routers/resource/createResourceRule.ts index 200ee07d4..b75055414 100644 --- a/server/routers/resource/createResourceRule.ts +++ b/server/routers/resource/createResourceRule.ts @@ -25,7 +25,7 @@ const createResourceRuleSchema = z.strictObject({ }); const createResourceRuleParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/deleteResource.ts b/server/routers/resource/deleteResource.ts index 682fd6aa9..5353d85dd 100644 --- a/server/routers/resource/deleteResource.ts +++ b/server/routers/resource/deleteResource.ts @@ -15,7 +15,7 @@ import { OpenAPITags, registry } from "@server/openApi"; // Define Zod schema for request parameters validation const deleteResourceSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/deleteResourceRule.ts b/server/routers/resource/deleteResourceRule.ts index 0fe9007f8..64ed684b3 100644 --- a/server/routers/resource/deleteResourceRule.ts +++ b/server/routers/resource/deleteResourceRule.ts @@ -11,8 +11,8 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const deleteResourceRuleSchema = z.strictObject({ - ruleId: z.string().transform(Number).pipe(z.int().positive()), - resourceId: z.string().transform(Number).pipe(z.int().positive()) + ruleId: z.coerce.number().int().positive(), + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/getExchangeToken.ts b/server/routers/resource/getExchangeToken.ts index b0af4b7ff..23151d534 100644 --- a/server/routers/resource/getExchangeToken.ts +++ b/server/routers/resource/getExchangeToken.ts @@ -17,7 +17,7 @@ import { checkOrgAccessPolicy } from "#dynamic/lib/checkOrgAccessPolicy"; import { logAccessAudit } from "#dynamic/lib/logAccessAudit"; const getExchangeTokenParams = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export type GetExchangeTokenResponse = { diff --git a/server/routers/resource/getResourceWhitelist.ts b/server/routers/resource/getResourceWhitelist.ts index 5eb05184f..a33899a27 100644 --- a/server/routers/resource/getResourceWhitelist.ts +++ b/server/routers/resource/getResourceWhitelist.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const getResourceWhitelistSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); async function queryWhitelist(resourceId: number) { diff --git a/server/routers/resource/listResourceRoles.ts b/server/routers/resource/listResourceRoles.ts index 4af631191..513bffdb0 100644 --- a/server/routers/resource/listResourceRoles.ts +++ b/server/routers/resource/listResourceRoles.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const listResourceRolesSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); async function query(resourceId: number) { diff --git a/server/routers/resource/listResourceRules.ts b/server/routers/resource/listResourceRules.ts index 92d738cbb..067133219 100644 --- a/server/routers/resource/listResourceRules.ts +++ b/server/routers/resource/listResourceRules.ts @@ -11,7 +11,7 @@ import logger from "@server/logger"; import { OpenAPITags, registry } from "@server/openApi"; const listResourceRulesParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const listResourceRulesSchema = z.object({ diff --git a/server/routers/resource/listResourceUsers.ts b/server/routers/resource/listResourceUsers.ts index 2802ac827..083ead537 100644 --- a/server/routers/resource/listResourceUsers.ts +++ b/server/routers/resource/listResourceUsers.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const listResourceUsersSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); async function queryUsers(resourceId: number) { diff --git a/server/routers/resource/removeEmailFromResourceWhitelist.ts b/server/routers/resource/removeEmailFromResourceWhitelist.ts index f419c4136..e5bfc0683 100644 --- a/server/routers/resource/removeEmailFromResourceWhitelist.ts +++ b/server/routers/resource/removeEmailFromResourceWhitelist.ts @@ -22,7 +22,7 @@ const removeEmailFromResourceWhitelistBodySchema = z.strictObject({ }); const removeEmailFromResourceWhitelistParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/setResourceHeaderAuth.ts b/server/routers/resource/setResourceHeaderAuth.ts index 9c28bf9f0..07f7948b5 100644 --- a/server/routers/resource/setResourceHeaderAuth.ts +++ b/server/routers/resource/setResourceHeaderAuth.ts @@ -15,7 +15,7 @@ import { hashPassword } from "@server/auth/password"; import { OpenAPITags, registry } from "@server/openApi"; const setResourceAuthMethodsParamsSchema = z.object({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const setResourceAuthMethodsBodySchema = z.strictObject({ diff --git a/server/routers/resource/setResourcePassword.ts b/server/routers/resource/setResourcePassword.ts index d9fcb5f0b..4447d393e 100644 --- a/server/routers/resource/setResourcePassword.ts +++ b/server/routers/resource/setResourcePassword.ts @@ -13,7 +13,7 @@ import { hashPassword } from "@server/auth/password"; import { OpenAPITags, registry } from "@server/openApi"; const setResourceAuthMethodsParamsSchema = z.object({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const setResourceAuthMethodsBodySchema = z.strictObject({ diff --git a/server/routers/resource/setResourcePincode.ts b/server/routers/resource/setResourcePincode.ts index 54057ba08..6cbfbe9a4 100644 --- a/server/routers/resource/setResourcePincode.ts +++ b/server/routers/resource/setResourcePincode.ts @@ -14,7 +14,7 @@ import { hashPassword } from "@server/auth/password"; import { OpenAPITags, registry } from "@server/openApi"; const setResourceAuthMethodsParamsSchema = z.object({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const setResourceAuthMethodsBodySchema = z.strictObject({ diff --git a/server/routers/resource/setResourceRoles.ts b/server/routers/resource/setResourceRoles.ts index ff3cd7377..80880293d 100644 --- a/server/routers/resource/setResourceRoles.ts +++ b/server/routers/resource/setResourceRoles.ts @@ -15,7 +15,7 @@ const setResourceRolesBodySchema = z.strictObject({ }); const setResourceRolesParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/setResourceUsers.ts b/server/routers/resource/setResourceUsers.ts index 46b5d1523..288d1ae02 100644 --- a/server/routers/resource/setResourceUsers.ts +++ b/server/routers/resource/setResourceUsers.ts @@ -15,7 +15,7 @@ const setUserResourcesBodySchema = z.strictObject({ }); const setUserResourcesParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/setResourceWhitelist.ts b/server/routers/resource/setResourceWhitelist.ts index aa5dc8cdb..b7522df84 100644 --- a/server/routers/resource/setResourceWhitelist.ts +++ b/server/routers/resource/setResourceWhitelist.ts @@ -24,7 +24,7 @@ const setResourceWhitelistBodySchema = z.strictObject({ }); const setResourceWhitelistParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/resource/updateResource.ts b/server/routers/resource/updateResource.ts index 0a7052dce..dd405df0d 100644 --- a/server/routers/resource/updateResource.ts +++ b/server/routers/resource/updateResource.ts @@ -31,7 +31,7 @@ import { tierMatrix } from "@server/lib/billing/tierMatrix"; import { isSubscribed } from "#dynamic/lib/isSubscribed"; const updateResourceParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const updateHttpResourceBodySchema = z diff --git a/server/routers/resource/updateResourceRule.ts b/server/routers/resource/updateResourceRule.ts index 4074fd93a..7fae5c959 100644 --- a/server/routers/resource/updateResourceRule.ts +++ b/server/routers/resource/updateResourceRule.ts @@ -18,8 +18,8 @@ import { isValidRegionId } from "@server/db/regions"; // Define Zod schema for request parameters validation const updateResourceRuleParamsSchema = z.strictObject({ - ruleId: z.string().transform(Number).pipe(z.int().positive()), - resourceId: z.string().transform(Number).pipe(z.int().positive()) + ruleId: z.coerce.number().int().positive(), + resourceId: z.coerce.number().int().positive() }); // Define Zod schema for request body validation diff --git a/server/routers/role/addRoleAction.ts b/server/routers/role/addRoleAction.ts index 5c258de7e..45f2fd92e 100644 --- a/server/routers/role/addRoleAction.ts +++ b/server/routers/role/addRoleAction.ts @@ -10,7 +10,7 @@ import { eq } from "drizzle-orm"; import { fromError } from "zod-validation-error"; const addRoleActionParamSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const addRoleActionSchema = z.strictObject({ diff --git a/server/routers/role/addRoleSite.ts b/server/routers/role/addRoleSite.ts index ddd1f07e7..6bfa06811 100644 --- a/server/routers/role/addRoleSite.ts +++ b/server/routers/role/addRoleSite.ts @@ -10,11 +10,11 @@ import { eq } from "drizzle-orm"; import { fromError } from "zod-validation-error"; const addRoleSiteParamsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const addRoleSiteSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); export async function addRoleSite( diff --git a/server/routers/role/deleteRole.ts b/server/routers/role/deleteRole.ts index 4d2797250..28811d81e 100644 --- a/server/routers/role/deleteRole.ts +++ b/server/routers/role/deleteRole.ts @@ -11,11 +11,11 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const deleteRoleSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const deelteRoleBodySchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/role/getRole.ts b/server/routers/role/getRole.ts index a5c459968..a96926ff3 100644 --- a/server/routers/role/getRole.ts +++ b/server/routers/role/getRole.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const getRoleSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/role/listRoleActions.ts b/server/routers/role/listRoleActions.ts index 31ef66044..8c0d309c2 100644 --- a/server/routers/role/listRoleActions.ts +++ b/server/routers/role/listRoleActions.ts @@ -10,7 +10,7 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const listRoleActionsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); export async function listRoleActions( diff --git a/server/routers/role/listRoleResources.ts b/server/routers/role/listRoleResources.ts index 7ba1fdab3..9a3bbf4d4 100644 --- a/server/routers/role/listRoleResources.ts +++ b/server/routers/role/listRoleResources.ts @@ -10,7 +10,7 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const listRoleResourcesSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); export async function listRoleResources( diff --git a/server/routers/role/listRoleSites.ts b/server/routers/role/listRoleSites.ts index 1c9dcdbe1..6fe28ac6d 100644 --- a/server/routers/role/listRoleSites.ts +++ b/server/routers/role/listRoleSites.ts @@ -10,7 +10,7 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const listRoleSitesSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); export async function listRoleSites( diff --git a/server/routers/role/removeRoleAction.ts b/server/routers/role/removeRoleAction.ts index 3c2ee7884..848fecf02 100644 --- a/server/routers/role/removeRoleAction.ts +++ b/server/routers/role/removeRoleAction.ts @@ -10,7 +10,7 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const removeRoleActionParamsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const removeRoleActionSchema = z.strictObject({ diff --git a/server/routers/role/removeRoleResource.ts b/server/routers/role/removeRoleResource.ts index fac1c941a..db05eb952 100644 --- a/server/routers/role/removeRoleResource.ts +++ b/server/routers/role/removeRoleResource.ts @@ -10,11 +10,11 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const removeRoleResourceParamsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const removeRoleResourceSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export async function removeRoleResource( diff --git a/server/routers/role/removeRoleSite.ts b/server/routers/role/removeRoleSite.ts index 6c64820ea..b222fcfea 100644 --- a/server/routers/role/removeRoleSite.ts +++ b/server/routers/role/removeRoleSite.ts @@ -10,11 +10,11 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const removeRoleSiteParamsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const removeRoleSiteSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); export async function removeRoleSite( diff --git a/server/routers/role/updateRole.ts b/server/routers/role/updateRole.ts index 7400e5823..feb5ecadc 100644 --- a/server/routers/role/updateRole.ts +++ b/server/routers/role/updateRole.ts @@ -14,7 +14,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { tierMatrix } from "@server/lib/billing/tierMatrix"; const updateRoleParamsSchema = z.strictObject({ - roleId: z.string().transform(Number).pipe(z.int().positive()) + roleId: z.coerce.number().int().positive() }); const sshSudoModeSchema = z.enum(["none", "full", "commands"]); diff --git a/server/routers/site/deleteSite.ts b/server/routers/site/deleteSite.ts index 10ecbbf1e..4c0c52dbe 100644 --- a/server/routers/site/deleteSite.ts +++ b/server/routers/site/deleteSite.ts @@ -16,7 +16,7 @@ import { usageService } from "@server/lib/billing/usageService"; import { FeatureId } from "@server/lib/billing"; const deleteSiteSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/site/listSiteRoles.ts b/server/routers/site/listSiteRoles.ts index a2cacf1d1..b0363325d 100644 --- a/server/routers/site/listSiteRoles.ts +++ b/server/routers/site/listSiteRoles.ts @@ -10,7 +10,7 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; const listSiteRolesSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); export async function listSiteRoles( diff --git a/server/routers/site/socketIntegration.ts b/server/routers/site/socketIntegration.ts index fe6e7b95e..85d5bc9dd 100644 --- a/server/routers/site/socketIntegration.ts +++ b/server/routers/site/socketIntegration.ts @@ -44,7 +44,7 @@ export interface Container { } const siteIdParamsSchema = z.strictObject({ - siteId: z.string().transform(stoi).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); const DockerStatusSchema = z.strictObject({ diff --git a/server/routers/site/updateSite.ts b/server/routers/site/updateSite.ts index 34d1341d7..22cd16f7b 100644 --- a/server/routers/site/updateSite.ts +++ b/server/routers/site/updateSite.ts @@ -12,7 +12,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { isValidCIDR } from "@server/lib/validators"; const updateSiteParamsSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); const updateSiteBodySchema = z diff --git a/server/routers/siteResource/batchAddClientToSiteResources.ts b/server/routers/siteResource/batchAddClientToSiteResources.ts index 34c7b58fe..8ee4b3068 100644 --- a/server/routers/siteResource/batchAddClientToSiteResources.ts +++ b/server/routers/siteResource/batchAddClientToSiteResources.ts @@ -22,7 +22,7 @@ import { const batchAddClientToSiteResourcesParamsSchema = z .object({ - clientId: z.string().transform(Number).pipe(z.number().int().positive()) + clientId: z.coerce.number().int().positive() }) .strict(); diff --git a/server/routers/siteResource/createSiteResource.ts b/server/routers/siteResource/createSiteResource.ts index bc80e8b41..9d0f786b3 100644 --- a/server/routers/siteResource/createSiteResource.ts +++ b/server/routers/siteResource/createSiteResource.ts @@ -42,7 +42,12 @@ const createSiteResourceParamsSchema = z.strictObject({ const createSiteResourceSchema = z .strictObject({ name: z.string().min(1).max(255), - niceId: z.string().optional(), + niceId: z.string().optional() + .openapi({ + description: + "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", + example: "service.example.internal" + }), // protocol: z.enum(["tcp", "udp"]).optional(), mode: z.enum(["host", "cidr", "http"]), ssl: z.boolean().optional(), // only used for http mode diff --git a/server/routers/siteResource/deleteSiteResource.ts b/server/routers/siteResource/deleteSiteResource.ts index 5a4eb1cc9..4326c6638 100644 --- a/server/routers/siteResource/deleteSiteResource.ts +++ b/server/routers/siteResource/deleteSiteResource.ts @@ -12,7 +12,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { rebuildClientAssociationsFromSiteResource } from "@server/lib/rebuildClientAssociations"; const deleteSiteResourceParamsSchema = z.strictObject({ - siteResourceId: z.string().transform(Number).pipe(z.int().positive()) + siteResourceId: z.coerce.number().int().positive() }); export type DeleteSiteResourceResponse = { diff --git a/server/routers/siteResource/listSiteResources.ts b/server/routers/siteResource/listSiteResources.ts index 61460c2d0..f199e815f 100644 --- a/server/routers/siteResource/listSiteResources.ts +++ b/server/routers/siteResource/listSiteResources.ts @@ -11,7 +11,7 @@ import logger from "@server/logger"; import { OpenAPITags, registry } from "@server/openApi"; const listSiteResourcesParamsSchema = z.strictObject({ - siteId: z.string().transform(Number).pipe(z.int().positive()), + siteId: z.coerce.number().int().positive(), orgId: z.string() }); diff --git a/server/routers/siteResource/updateSiteResource.ts b/server/routers/siteResource/updateSiteResource.ts index 7f8ef3e25..5e8695238 100644 --- a/server/routers/siteResource/updateSiteResource.ts +++ b/server/routers/siteResource/updateSiteResource.ts @@ -37,7 +37,7 @@ import { z } from "zod"; import { fromError } from "zod-validation-error"; const updateSiteResourceParamsSchema = z.strictObject({ - siteResourceId: z.string().transform(Number).pipe(z.int().positive()) + siteResourceId: z.coerce.number().int().positive() }); const updateSiteResourceSchema = z @@ -58,7 +58,12 @@ const updateSiteResourceSchema = z // mode: z.enum(["host", "cidr", "port"]).optional(), mode: z.enum(["host", "cidr", "http"]).optional(), ssl: z.boolean().optional(), - scheme: z.enum(["http", "https"]).nullish(), + scheme: z.enum(["http", "https"]).nullish() + .openapi({ + description: + "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", + example: "service.example.internal" + }), // proxyPort: z.int().positive().nullish(), destinationPort: z.int().positive().nullish(), destination: z.string().min(1).optional(), diff --git a/server/routers/target/createTarget.ts b/server/routers/target/createTarget.ts index c629e378e..31755eae8 100644 --- a/server/routers/target/createTarget.ts +++ b/server/routers/target/createTarget.ts @@ -26,7 +26,7 @@ import { } from "@server/lib/alerts"; const createTargetParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const createTargetSchema = z.strictObject({ diff --git a/server/routers/target/deleteTarget.ts b/server/routers/target/deleteTarget.ts index 685c41e7e..c9ef0eef2 100644 --- a/server/routers/target/deleteTarget.ts +++ b/server/routers/target/deleteTarget.ts @@ -13,7 +13,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { targetHealthCheck } from "@server/db"; const deleteTargetSchema = z.strictObject({ - targetId: z.string().transform(Number).pipe(z.int().positive()) + targetId: z.coerce.number().int().positive() }); registry.registerPath({ diff --git a/server/routers/target/getTarget.ts b/server/routers/target/getTarget.ts index 281c39906..e889a2149 100644 --- a/server/routers/target/getTarget.ts +++ b/server/routers/target/getTarget.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; const getTargetSchema = z.strictObject({ - targetId: z.string().transform(Number).pipe(z.int().positive()) + targetId: z.coerce.number().int().positive() }); type GetTargetResponse = Target & diff --git a/server/routers/target/listTargets.ts b/server/routers/target/listTargets.ts index df3d508c5..a64c5abdc 100644 --- a/server/routers/target/listTargets.ts +++ b/server/routers/target/listTargets.ts @@ -11,7 +11,7 @@ import logger from "@server/logger"; import { OpenAPITags, registry } from "@server/openApi"; const listTargetsParamsSchema = z.strictObject({ - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); const listTargetsSchema = z.object({ diff --git a/server/routers/target/updateTarget.ts b/server/routers/target/updateTarget.ts index 4533dc2e5..6eb319079 100644 --- a/server/routers/target/updateTarget.ts +++ b/server/routers/target/updateTarget.ts @@ -20,7 +20,7 @@ import { isTargetValid } from "@server/lib/validators"; import { OpenAPITags, registry } from "@server/openApi"; const updateTargetParamsSchema = z.strictObject({ - targetId: z.string().transform(Number).pipe(z.int().positive()) + targetId: z.coerce.number().int().positive() }); const updateTargetBodySchema = z diff --git a/server/routers/user/addUserRoleLegacy.ts b/server/routers/user/addUserRoleLegacy.ts index 6e5b805ab..2b5abf08f 100644 --- a/server/routers/user/addUserRoleLegacy.ts +++ b/server/routers/user/addUserRoleLegacy.ts @@ -14,7 +14,7 @@ import { rebuildClientAssociationsFromClient } from "@server/lib/rebuildClientAs /** Legacy path param order: /role/:roleId/add/:userId */ const addUserRoleLegacyParamsSchema = z.strictObject({ - roleId: z.string().transform(stoi).pipe(z.number()), + roleId: z.coerce.number(), userId: z.string() }); diff --git a/server/routers/user/addUserSite.ts b/server/routers/user/addUserSite.ts index ffb9f1ba9..bd60f8da7 100644 --- a/server/routers/user/addUserSite.ts +++ b/server/routers/user/addUserSite.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; const addUserSiteSchema = z.strictObject({ userId: z.string(), - siteId: z.string().transform(Number).pipe(z.int().positive()) + siteId: z.coerce.number().int().positive() }); export async function addUserSite( diff --git a/server/routers/user/removeUserResource.ts b/server/routers/user/removeUserResource.ts index bdb0cda32..a27f42ea7 100644 --- a/server/routers/user/removeUserResource.ts +++ b/server/routers/user/removeUserResource.ts @@ -11,7 +11,7 @@ import { fromError } from "zod-validation-error"; const removeUserResourceSchema = z.strictObject({ userId: z.string(), - resourceId: z.string().transform(Number).pipe(z.int().positive()) + resourceId: z.coerce.number().int().positive() }); export async function removeUserResource( From a0a093ed0b0b571ec26ff3dc923cbb982291bf64 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 17 May 2026 06:43:10 +0000 Subject: [PATCH 03/11] Document all registerPath responses and normalize OpenAPI parser schemas Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/73990123-9c27-444b-bc6e-77e890a0d57c Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com> --- .../routers/alertRule/createAlertRule.ts | 17 +++++++++- .../routers/alertRule/deleteAlertRule.ts | 17 +++++++++- .../private/routers/alertRule/getAlertRule.ts | 17 +++++++++- .../routers/alertRule/listAlertRules.ts | 17 +++++++++- .../routers/alertRule/updateAlertRule.ts | 17 +++++++++- .../routers/auditLogs/exportAccessAuditLog.ts | 18 +++++++++- .../routers/auditLogs/exportActionAuditLog.ts | 18 +++++++++- .../auditLogs/exportConnectionAuditLog.ts | 18 +++++++++- .../routers/auditLogs/queryAccessAuditLog.ts | 17 +++++++++- .../routers/auditLogs/queryActionAuditLog.ts | 17 +++++++++- .../auditLogs/queryConnectionAuditLog.ts | 17 +++++++++- server/private/routers/billing/getOrgUsage.ts | 17 +++++++++- .../routers/certificates/getCertificate.ts | 17 +++++++++- .../certificates/restartCertificate.ts | 17 +++++++++- .../checkDomainNamespaceAvailability.ts | 17 +++++++++- .../routers/domain/listDomainNamespaces.ts | 17 +++++++++- .../createEventStreamingDestination.ts | 17 +++++++++- .../deleteEventStreamingDestination.ts | 17 +++++++++- .../listEventStreamingDestinations.ts | 17 +++++++++- .../updateEventStreamingDestination.ts | 17 +++++++++- .../routers/healthChecks/createHealthCheck.ts | 17 +++++++++- .../routers/healthChecks/deleteHealthCheck.ts | 17 +++++++++- .../routers/healthChecks/listHealthChecks.ts | 17 +++++++++- .../routers/healthChecks/updateHealthCheck.ts | 17 +++++++++- .../routers/orgIdp/createOrgOidcIdp.ts | 17 +++++++++- server/private/routers/orgIdp/deleteOrgIdp.ts | 17 +++++++++- server/private/routers/orgIdp/getOrgIdp.ts | 17 +++++++++- server/private/routers/orgIdp/listOrgIdps.ts | 17 +++++++++- .../routers/orgIdp/updateOrgOidcIdp.ts | 17 +++++++++- server/private/routers/ssh/signSshKey.ts | 17 +++++++++- server/private/routers/user/addUserRole.ts | 17 +++++++++- server/private/routers/user/removeUserRole.ts | 17 +++++++++- .../routers/accessToken/deleteAccessToken.ts | 17 +++++++++- .../accessToken/generateAccessToken.ts | 17 +++++++++- .../routers/accessToken/listAccessTokens.ts | 34 +++++++++++++++++-- server/routers/apiKeys/createOrgApiKey.ts | 17 +++++++++- server/routers/apiKeys/deleteApiKey.ts | 17 +++++++++- server/routers/apiKeys/listApiKeyActions.ts | 17 +++++++++- server/routers/apiKeys/listOrgApiKeys.ts | 17 +++++++++- server/routers/apiKeys/setApiKeyActions.ts | 17 +++++++++- .../auditLogs/exportRequestAuditLog.ts | 18 +++++++++- .../auditLogs/queryRequestAnalytics.ts | 17 +++++++++- .../routers/auditLogs/queryRequestAuditLog.ts | 17 +++++++++- server/routers/auth/lookupUser.ts | 17 +++++++++- .../routers/blueprints/applyJSONBlueprint.ts | 17 +++++++++- .../routers/blueprints/applyYAMLBlueprint.ts | 17 +++++++++- server/routers/blueprints/getBlueprint.ts | 17 +++++++++- server/routers/blueprints/listBlueprints.ts | 17 +++++++++- server/routers/client/archiveClient.ts | 17 +++++++++- server/routers/client/blockClient.ts | 17 +++++++++- server/routers/client/createClient.ts | 17 +++++++++- server/routers/client/createUserClient.ts | 17 +++++++++- server/routers/client/deleteClient.ts | 17 +++++++++- server/routers/client/getClient.ts | 34 +++++++++++++++++-- server/routers/client/listClients.ts | 17 +++++++++- server/routers/client/listUserDevices.ts | 17 +++++++++- server/routers/client/pickClientDefaults.ts | 17 +++++++++- server/routers/client/unarchiveClient.ts | 17 +++++++++- server/routers/client/unblockClient.ts | 17 +++++++++- server/routers/client/updateClient.ts | 17 +++++++++- server/routers/domain/getDNSRecords.ts | 17 +++++++++- server/routers/domain/getDomain.ts | 17 +++++++++- server/routers/domain/listDomains.ts | 17 +++++++++- server/routers/domain/updateDomain.ts | 17 +++++++++- server/routers/idp/createIdpOrgPolicy.ts | 17 +++++++++- server/routers/idp/createOidcIdp.ts | 17 +++++++++- server/routers/idp/deleteIdp.ts | 17 +++++++++- server/routers/idp/deleteIdpOrgPolicy.ts | 17 +++++++++- server/routers/idp/getIdp.ts | 17 +++++++++- server/routers/idp/listIdpOrgPolicies.ts | 17 +++++++++- server/routers/idp/listIdps.ts | 17 +++++++++- server/routers/idp/updateIdpOrgPolicy.ts | 17 +++++++++- server/routers/idp/updateOidcIdp.ts | 17 +++++++++- server/routers/olm/createUserOlm.ts | 17 +++++++++- server/routers/olm/deleteUserOlm.ts | 17 +++++++++- server/routers/olm/getUserOlm.ts | 17 +++++++++- server/routers/olm/listUserOlms.ts | 17 +++++++++- server/routers/org/checkOrgUserAccess.ts | 17 +++++++++- server/routers/org/createOrg.ts | 17 +++++++++- server/routers/org/deleteOrg.ts | 17 +++++++++- server/routers/org/getOrg.ts | 17 +++++++++- server/routers/org/listOrgs.ts | 17 +++++++++- server/routers/org/listUserOrgs.ts | 17 +++++++++- server/routers/org/resetOrgBandwidth.ts | 17 +++++++++- server/routers/org/updateOrg.ts | 17 +++++++++- .../resource/addEmailToResourceWhitelist.ts | 17 +++++++++- server/routers/resource/addRoleToResource.ts | 17 +++++++++- server/routers/resource/addUserToResource.ts | 17 +++++++++- server/routers/resource/createResource.ts | 17 +++++++++- server/routers/resource/createResourceRule.ts | 17 +++++++++- server/routers/resource/deleteResource.ts | 17 +++++++++- server/routers/resource/deleteResourceRule.ts | 17 +++++++++- server/routers/resource/getResource.ts | 34 +++++++++++++++++-- .../routers/resource/getResourceWhitelist.ts | 17 +++++++++- .../routers/resource/listAllResourceNames.ts | 17 +++++++++- server/routers/resource/listResourceRoles.ts | 17 +++++++++- server/routers/resource/listResourceRules.ts | 17 +++++++++- server/routers/resource/listResourceUsers.ts | 17 +++++++++- server/routers/resource/listResources.ts | 17 +++++++++- .../resource/listUserResourceAliases.ts | 17 +++++++++- .../removeEmailFromResourceWhitelist.ts | 17 +++++++++- .../resource/removeRoleFromResource.ts | 17 +++++++++- .../resource/removeUserFromResource.ts | 17 +++++++++- .../routers/resource/setResourceHeaderAuth.ts | 17 +++++++++- .../routers/resource/setResourcePassword.ts | 17 +++++++++- server/routers/resource/setResourcePincode.ts | 17 +++++++++- server/routers/resource/setResourceRoles.ts | 17 +++++++++- server/routers/resource/setResourceUsers.ts | 17 +++++++++- .../routers/resource/setResourceWhitelist.ts | 17 +++++++++- server/routers/resource/updateResource.ts | 17 +++++++++- server/routers/resource/updateResourceRule.ts | 17 +++++++++- server/routers/role/createRole.ts | 17 +++++++++- server/routers/role/deleteRole.ts | 23 ++++++++++--- server/routers/role/getRole.ts | 17 +++++++++- server/routers/role/listRoles.ts | 17 +++++++++- server/routers/role/updateRole.ts | 17 +++++++++- server/routers/site/createSite.ts | 17 +++++++++- server/routers/site/deleteSite.ts | 17 +++++++++- server/routers/site/getSite.ts | 34 +++++++++++++++++-- server/routers/site/listSites.ts | 17 +++++++++- server/routers/site/pickSiteDefaults.ts | 17 +++++++++- server/routers/site/updateSite.ts | 17 +++++++++- .../siteResource/addClientToSiteResource.ts | 17 +++++++++- .../siteResource/addRoleToSiteResource.ts | 17 +++++++++- .../siteResource/addUserToSiteResource.ts | 17 +++++++++- .../batchAddClientToSiteResources.ts | 17 +++++++++- .../siteResource/createSiteResource.ts | 31 ++++++++++++----- .../siteResource/deleteSiteResource.ts | 17 +++++++++- .../routers/siteResource/getSiteResource.ts | 34 +++++++++++++++++-- .../siteResource/listAllSiteResourcesByOrg.ts | 17 +++++++++- .../siteResource/listSiteResourceClients.ts | 17 +++++++++- .../siteResource/listSiteResourceRoles.ts | 17 +++++++++- .../siteResource/listSiteResourceUsers.ts | 17 +++++++++- .../routers/siteResource/listSiteResources.ts | 17 +++++++++- .../removeClientFromSiteResource.ts | 17 +++++++++- .../removeRoleFromSiteResource.ts | 17 +++++++++- .../removeUserFromSiteResource.ts | 17 +++++++++- .../siteResource/setSiteResourceClients.ts | 17 +++++++++- .../siteResource/setSiteResourceRoles.ts | 17 +++++++++- .../siteResource/setSiteResourceUsers.ts | 17 +++++++++- .../siteResource/updateSiteResource.ts | 31 ++++++++++++----- server/routers/target/createTarget.ts | 17 +++++++++- server/routers/target/deleteTarget.ts | 17 +++++++++- server/routers/target/getTarget.ts | 17 +++++++++- server/routers/target/listTargets.ts | 17 +++++++++- server/routers/target/updateTarget.ts | 17 +++++++++- server/routers/user/addUserRoleLegacy.ts | 17 +++++++++- server/routers/user/adminGetUser.ts | 17 +++++++++- server/routers/user/adminListUsers.ts | 17 +++++++++- server/routers/user/adminUpdateUser2FA.ts | 17 +++++++++- server/routers/user/createOrgUser.ts | 17 +++++++++- server/routers/user/getOrgUser.ts | 17 +++++++++- server/routers/user/getOrgUserByUsername.ts | 17 +++++++++- server/routers/user/inviteUser.ts | 17 +++++++++- server/routers/user/listInvitations.ts | 17 +++++++++- server/routers/user/listUsers.ts | 17 +++++++++- server/routers/user/removeInvitation.ts | 17 +++++++++- server/routers/user/removeUserOrg.ts | 17 +++++++++- server/routers/user/updateOrgUser.ts | 17 +++++++++- server/routers/ws/checkRoundTripMessage.ts | 17 +++++++++- 160 files changed, 2661 insertions(+), 182 deletions(-) diff --git a/server/private/routers/alertRule/createAlertRule.ts b/server/private/routers/alertRule/createAlertRule.ts index f9b84ebab..f4a11ad3d 100644 --- a/server/private/routers/alertRule/createAlertRule.ts +++ b/server/private/routers/alertRule/createAlertRule.ts @@ -202,7 +202,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createAlertRule( diff --git a/server/private/routers/alertRule/deleteAlertRule.ts b/server/private/routers/alertRule/deleteAlertRule.ts index 0988cd631..b475bb6c3 100644 --- a/server/private/routers/alertRule/deleteAlertRule.ts +++ b/server/private/routers/alertRule/deleteAlertRule.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteAlertRule( diff --git a/server/private/routers/alertRule/getAlertRule.ts b/server/private/routers/alertRule/getAlertRule.ts index 9fd0157e3..dde9093fb 100644 --- a/server/private/routers/alertRule/getAlertRule.ts +++ b/server/private/routers/alertRule/getAlertRule.ts @@ -49,7 +49,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getAlertRule( diff --git a/server/private/routers/alertRule/listAlertRules.ts b/server/private/routers/alertRule/listAlertRules.ts index 9684b88a4..3931da44c 100644 --- a/server/private/routers/alertRule/listAlertRules.ts +++ b/server/private/routers/alertRule/listAlertRules.ts @@ -95,7 +95,22 @@ registry.registerPath({ query: querySchema, params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listAlertRules( diff --git a/server/private/routers/alertRule/updateAlertRule.ts b/server/private/routers/alertRule/updateAlertRule.ts index 358661ac9..f36dcc7e3 100644 --- a/server/private/routers/alertRule/updateAlertRule.ts +++ b/server/private/routers/alertRule/updateAlertRule.ts @@ -164,7 +164,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateAlertRule( diff --git a/server/private/routers/auditLogs/exportAccessAuditLog.ts b/server/private/routers/auditLogs/exportAccessAuditLog.ts index 61a52778d..b83673b33 100644 --- a/server/private/routers/auditLogs/exportAccessAuditLog.ts +++ b/server/private/routers/auditLogs/exportAccessAuditLog.ts @@ -18,6 +18,7 @@ import { OpenAPITags } from "@server/openApi"; import createHttpError from "http-errors"; import HttpCode from "@server/types/HttpCode"; import { fromError } from "zod-validation-error"; +import { z } from "zod"; import logger from "@server/logger"; import { queryAccessAuditLogsParams, @@ -37,7 +38,22 @@ registry.registerPath({ query: queryAccessAuditLogsQuery, params: queryAccessAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function exportAccessAuditLogs( diff --git a/server/private/routers/auditLogs/exportActionAuditLog.ts b/server/private/routers/auditLogs/exportActionAuditLog.ts index d0f025efa..0d707c41e 100644 --- a/server/private/routers/auditLogs/exportActionAuditLog.ts +++ b/server/private/routers/auditLogs/exportActionAuditLog.ts @@ -18,6 +18,7 @@ import { OpenAPITags } from "@server/openApi"; import createHttpError from "http-errors"; import HttpCode from "@server/types/HttpCode"; import { fromError } from "zod-validation-error"; +import { z } from "zod"; import logger from "@server/logger"; import { queryActionAuditLogsParams, @@ -37,7 +38,22 @@ registry.registerPath({ query: queryActionAuditLogsQuery, params: queryActionAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function exportActionAuditLogs( diff --git a/server/private/routers/auditLogs/exportConnectionAuditLog.ts b/server/private/routers/auditLogs/exportConnectionAuditLog.ts index d4e5ec9b5..1115d23ad 100644 --- a/server/private/routers/auditLogs/exportConnectionAuditLog.ts +++ b/server/private/routers/auditLogs/exportConnectionAuditLog.ts @@ -18,6 +18,7 @@ import { OpenAPITags } from "@server/openApi"; import createHttpError from "http-errors"; import HttpCode from "@server/types/HttpCode"; import { fromError } from "zod-validation-error"; +import { z } from "zod"; import logger from "@server/logger"; import { queryConnectionAuditLogsParams, @@ -37,7 +38,22 @@ registry.registerPath({ query: queryConnectionAuditLogsQuery, params: queryConnectionAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function exportConnectionAuditLogs( diff --git a/server/private/routers/auditLogs/queryAccessAuditLog.ts b/server/private/routers/auditLogs/queryAccessAuditLog.ts index 1ce03f716..6aace53cb 100644 --- a/server/private/routers/auditLogs/queryAccessAuditLog.ts +++ b/server/private/routers/auditLogs/queryAccessAuditLog.ts @@ -324,7 +324,22 @@ registry.registerPath({ query: queryAccessAuditLogsQuery, params: queryAccessAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function queryAccessAuditLogs( diff --git a/server/private/routers/auditLogs/queryActionAuditLog.ts b/server/private/routers/auditLogs/queryActionAuditLog.ts index 2fbd7e59c..56f2f0201 100644 --- a/server/private/routers/auditLogs/queryActionAuditLog.ts +++ b/server/private/routers/auditLogs/queryActionAuditLog.ts @@ -165,7 +165,22 @@ registry.registerPath({ query: queryActionAuditLogsQuery, params: queryActionAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function queryActionAuditLogs( diff --git a/server/private/routers/auditLogs/queryConnectionAuditLog.ts b/server/private/routers/auditLogs/queryConnectionAuditLog.ts index 930ee6111..2086c2b38 100644 --- a/server/private/routers/auditLogs/queryConnectionAuditLog.ts +++ b/server/private/routers/auditLogs/queryConnectionAuditLog.ts @@ -439,7 +439,22 @@ registry.registerPath({ query: queryConnectionAuditLogsQuery, params: queryConnectionAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function queryConnectionAuditLogs( diff --git a/server/private/routers/billing/getOrgUsage.ts b/server/private/routers/billing/getOrgUsage.ts index 2429b1066..e64b5ec19 100644 --- a/server/private/routers/billing/getOrgUsage.ts +++ b/server/private/routers/billing/getOrgUsage.ts @@ -39,7 +39,22 @@ const getOrgSchema = z.strictObject({ // request: { // params: getOrgSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function getOrgUsage( diff --git a/server/private/routers/certificates/getCertificate.ts b/server/private/routers/certificates/getCertificate.ts index fca53e9bb..c365d3d7b 100644 --- a/server/private/routers/certificates/getCertificate.ts +++ b/server/private/routers/certificates/getCertificate.ts @@ -115,7 +115,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getCertificate( diff --git a/server/private/routers/certificates/restartCertificate.ts b/server/private/routers/certificates/restartCertificate.ts index 6d80c27b9..50c747f7b 100644 --- a/server/private/routers/certificates/restartCertificate.ts +++ b/server/private/routers/certificates/restartCertificate.ts @@ -40,7 +40,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function restartCertificate( diff --git a/server/private/routers/domain/checkDomainNamespaceAvailability.ts b/server/private/routers/domain/checkDomainNamespaceAvailability.ts index 9caacb0c9..c5320c1f6 100644 --- a/server/private/routers/domain/checkDomainNamespaceAvailability.ts +++ b/server/private/routers/domain/checkDomainNamespaceAvailability.ts @@ -42,7 +42,22 @@ registry.registerPath({ params: paramsSchema, query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function checkDomainNamespaceAvailability( diff --git a/server/private/routers/domain/listDomainNamespaces.ts b/server/private/routers/domain/listDomainNamespaces.ts index cb89f6a0d..21c454249 100644 --- a/server/private/routers/domain/listDomainNamespaces.ts +++ b/server/private/routers/domain/listDomainNamespaces.ts @@ -73,7 +73,22 @@ registry.registerPath({ request: { query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listDomainNamespaces( diff --git a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts index cb8f95b07..28df9b69c 100644 --- a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts @@ -58,7 +58,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createEventStreamingDestination( diff --git a/server/private/routers/eventStreamingDestination/deleteEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/deleteEventStreamingDestination.ts index 2ab75d7c8..13b54ef17 100644 --- a/server/private/routers/eventStreamingDestination/deleteEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/deleteEventStreamingDestination.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteEventStreamingDestination( diff --git a/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts b/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts index 27b5d9a5b..2f68b226e 100644 --- a/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts +++ b/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts @@ -88,7 +88,22 @@ registry.registerPath({ query: querySchema, params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listEventStreamingDestinations( diff --git a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts index b7a9f8598..b1f6c4547 100644 --- a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts @@ -61,7 +61,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateEventStreamingDestination( diff --git a/server/private/routers/healthChecks/createHealthCheck.ts b/server/private/routers/healthChecks/createHealthCheck.ts index 0fa5a77e9..f60eb7bae 100644 --- a/server/private/routers/healthChecks/createHealthCheck.ts +++ b/server/private/routers/healthChecks/createHealthCheck.ts @@ -68,7 +68,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createHealthCheck( diff --git a/server/private/routers/healthChecks/deleteHealthCheck.ts b/server/private/routers/healthChecks/deleteHealthCheck.ts index 530653aab..b5d054783 100644 --- a/server/private/routers/healthChecks/deleteHealthCheck.ts +++ b/server/private/routers/healthChecks/deleteHealthCheck.ts @@ -41,7 +41,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteHealthCheck( diff --git a/server/private/routers/healthChecks/listHealthChecks.ts b/server/private/routers/healthChecks/listHealthChecks.ts index 26cb75e9c..c0198d96e 100644 --- a/server/private/routers/healthChecks/listHealthChecks.ts +++ b/server/private/routers/healthChecks/listHealthChecks.ts @@ -68,7 +68,22 @@ registry.registerPath({ params: paramsSchema, query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listHealthChecks( diff --git a/server/private/routers/healthChecks/updateHealthCheck.ts b/server/private/routers/healthChecks/updateHealthCheck.ts index 4df92a5a7..83dba41cb 100644 --- a/server/private/routers/healthChecks/updateHealthCheck.ts +++ b/server/private/routers/healthChecks/updateHealthCheck.ts @@ -97,7 +97,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateHealthCheck( diff --git a/server/private/routers/orgIdp/createOrgOidcIdp.ts b/server/private/routers/orgIdp/createOrgOidcIdp.ts index 97928d99f..c829f0c84 100644 --- a/server/private/routers/orgIdp/createOrgOidcIdp.ts +++ b/server/private/routers/orgIdp/createOrgOidcIdp.ts @@ -63,7 +63,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createOrgOidcIdp( diff --git a/server/private/routers/orgIdp/deleteOrgIdp.ts b/server/private/routers/orgIdp/deleteOrgIdp.ts index 9e5dfccee..2007f180e 100644 --- a/server/private/routers/orgIdp/deleteOrgIdp.ts +++ b/server/private/routers/orgIdp/deleteOrgIdp.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteOrgIdp( diff --git a/server/private/routers/orgIdp/getOrgIdp.ts b/server/private/routers/orgIdp/getOrgIdp.ts index 9d4891f15..a2f29a57f 100644 --- a/server/private/routers/orgIdp/getOrgIdp.ts +++ b/server/private/routers/orgIdp/getOrgIdp.ts @@ -56,7 +56,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getOrgIdp( diff --git a/server/private/routers/orgIdp/listOrgIdps.ts b/server/private/routers/orgIdp/listOrgIdps.ts index ba73095d1..672fbc054 100644 --- a/server/private/routers/orgIdp/listOrgIdps.ts +++ b/server/private/routers/orgIdp/listOrgIdps.ts @@ -72,7 +72,22 @@ registry.registerPath({ query: querySchema, params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listOrgIdps( diff --git a/server/private/routers/orgIdp/updateOrgOidcIdp.ts b/server/private/routers/orgIdp/updateOrgOidcIdp.ts index 7c379f8ec..6ffc832a2 100644 --- a/server/private/routers/orgIdp/updateOrgOidcIdp.ts +++ b/server/private/routers/orgIdp/updateOrgOidcIdp.ts @@ -70,7 +70,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateOrgOidcIdp( diff --git a/server/private/routers/ssh/signSshKey.ts b/server/private/routers/ssh/signSshKey.ts index e29493a01..5dfab9f8c 100644 --- a/server/private/routers/ssh/signSshKey.ts +++ b/server/private/routers/ssh/signSshKey.ts @@ -92,7 +92,22 @@ export type SignSshKeyResponse = { // } // } // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function signSshKey( diff --git a/server/private/routers/user/addUserRole.ts b/server/private/routers/user/addUserRole.ts index 7989a6fdb..a59993a5d 100644 --- a/server/private/routers/user/addUserRole.ts +++ b/server/private/routers/user/addUserRole.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: addUserRoleParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addUserRole( diff --git a/server/private/routers/user/removeUserRole.ts b/server/private/routers/user/removeUserRole.ts index 382cc0508..de099be6d 100644 --- a/server/private/routers/user/removeUserRole.ts +++ b/server/private/routers/user/removeUserRole.ts @@ -39,7 +39,22 @@ registry.registerPath({ request: { params: removeUserRoleParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeUserRole( diff --git a/server/routers/accessToken/deleteAccessToken.ts b/server/routers/accessToken/deleteAccessToken.ts index 4e18ddeb8..405d4e68e 100644 --- a/server/routers/accessToken/deleteAccessToken.ts +++ b/server/routers/accessToken/deleteAccessToken.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: deleteAccessTokenParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteAccessToken( diff --git a/server/routers/accessToken/generateAccessToken.ts b/server/routers/accessToken/generateAccessToken.ts index 9181eb8de..dd4a44b88 100644 --- a/server/routers/accessToken/generateAccessToken.ts +++ b/server/routers/accessToken/generateAccessToken.ts @@ -54,7 +54,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function generateAccessToken( diff --git a/server/routers/accessToken/listAccessTokens.ts b/server/routers/accessToken/listAccessTokens.ts index 55751df81..88ff07b27 100644 --- a/server/routers/accessToken/listAccessTokens.ts +++ b/server/routers/accessToken/listAccessTokens.ts @@ -129,7 +129,22 @@ registry.registerPath({ }), query: listAccessTokensSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); registry.registerPath({ @@ -143,7 +158,22 @@ registry.registerPath({ }), query: listAccessTokensSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listAccessTokens( diff --git a/server/routers/apiKeys/createOrgApiKey.ts b/server/routers/apiKeys/createOrgApiKey.ts index 91ef72bc8..8df895d8f 100644 --- a/server/routers/apiKeys/createOrgApiKey.ts +++ b/server/routers/apiKeys/createOrgApiKey.ts @@ -48,7 +48,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createOrgApiKey( diff --git a/server/routers/apiKeys/deleteApiKey.ts b/server/routers/apiKeys/deleteApiKey.ts index 2627fd636..07d00d727 100644 --- a/server/routers/apiKeys/deleteApiKey.ts +++ b/server/routers/apiKeys/deleteApiKey.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteApiKey( diff --git a/server/routers/apiKeys/listApiKeyActions.ts b/server/routers/apiKeys/listApiKeyActions.ts index d816d4b38..a6d2f01ab 100644 --- a/server/routers/apiKeys/listApiKeyActions.ts +++ b/server/routers/apiKeys/listApiKeyActions.ts @@ -53,7 +53,22 @@ registry.registerPath({ params: paramsSchema, query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listApiKeyActions( diff --git a/server/routers/apiKeys/listOrgApiKeys.ts b/server/routers/apiKeys/listOrgApiKeys.ts index 24370665d..41f115f5a 100644 --- a/server/routers/apiKeys/listOrgApiKeys.ts +++ b/server/routers/apiKeys/listOrgApiKeys.ts @@ -57,7 +57,22 @@ registry.registerPath({ params: paramsSchema, query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listOrgApiKeys( diff --git a/server/routers/apiKeys/setApiKeyActions.ts b/server/routers/apiKeys/setApiKeyActions.ts index 55b3670ac..e31e8b8b9 100644 --- a/server/routers/apiKeys/setApiKeyActions.ts +++ b/server/routers/apiKeys/setApiKeyActions.ts @@ -36,7 +36,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setApiKeyActions( diff --git a/server/routers/auditLogs/exportRequestAuditLog.ts b/server/routers/auditLogs/exportRequestAuditLog.ts index 14054a5c3..1b4eede00 100644 --- a/server/routers/auditLogs/exportRequestAuditLog.ts +++ b/server/routers/auditLogs/exportRequestAuditLog.ts @@ -5,6 +5,7 @@ import { OpenAPITags } from "@server/openApi"; import createHttpError from "http-errors"; import HttpCode from "@server/types/HttpCode"; import { fromError } from "zod-validation-error"; +import { z } from "zod"; import logger from "@server/logger"; import { queryAccessAuditLogsQuery, @@ -28,7 +29,22 @@ registry.registerPath({ }), params: queryRequestAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function exportRequestAuditLogs( diff --git a/server/routers/auditLogs/queryRequestAnalytics.ts b/server/routers/auditLogs/queryRequestAnalytics.ts index 1e0f1f401..c1f36ad06 100644 --- a/server/routers/auditLogs/queryRequestAnalytics.ts +++ b/server/routers/auditLogs/queryRequestAnalytics.ts @@ -156,7 +156,22 @@ registry.registerPath({ query: queryAccessAuditLogsQuery, params: queryRequestAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export type QueryRequestAnalyticsResponse = Awaited>; diff --git a/server/routers/auditLogs/queryRequestAuditLog.ts b/server/routers/auditLogs/queryRequestAuditLog.ts index 000ec9815..755b78447 100644 --- a/server/routers/auditLogs/queryRequestAuditLog.ts +++ b/server/routers/auditLogs/queryRequestAuditLog.ts @@ -227,7 +227,22 @@ registry.registerPath({ query: queryAccessAuditLogsQuery, params: queryRequestAuditLogsParams }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); async function queryUniqueFilterAttributes( diff --git a/server/routers/auth/lookupUser.ts b/server/routers/auth/lookupUser.ts index 83894927a..b23e6f8a0 100644 --- a/server/routers/auth/lookupUser.ts +++ b/server/routers/auth/lookupUser.ts @@ -51,7 +51,22 @@ export type LookupUserResponse = { // request: { // body: lookupBodySchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function lookupUser( diff --git a/server/routers/blueprints/applyJSONBlueprint.ts b/server/routers/blueprints/applyJSONBlueprint.ts index fa7ed46ae..cd7026a9a 100644 --- a/server/routers/blueprints/applyJSONBlueprint.ts +++ b/server/routers/blueprints/applyJSONBlueprint.ts @@ -31,7 +31,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function applyJSONBlueprint( diff --git a/server/routers/blueprints/applyYAMLBlueprint.ts b/server/routers/blueprints/applyYAMLBlueprint.ts index 665943edd..5ddebeb67 100644 --- a/server/routers/blueprints/applyYAMLBlueprint.ts +++ b/server/routers/blueprints/applyYAMLBlueprint.ts @@ -54,7 +54,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function applyYAMLBlueprint( diff --git a/server/routers/blueprints/getBlueprint.ts b/server/routers/blueprints/getBlueprint.ts index f173d95fd..85d19bb15 100644 --- a/server/routers/blueprints/getBlueprint.ts +++ b/server/routers/blueprints/getBlueprint.ts @@ -57,7 +57,22 @@ registry.registerPath({ request: { params: getBlueprintSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getBlueprint( diff --git a/server/routers/blueprints/listBlueprints.ts b/server/routers/blueprints/listBlueprints.ts index 0235e7a18..f94bd9978 100644 --- a/server/routers/blueprints/listBlueprints.ts +++ b/server/routers/blueprints/listBlueprints.ts @@ -74,7 +74,22 @@ registry.registerPath({ }), query: listBluePrintsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listBlueprints( diff --git a/server/routers/client/archiveClient.ts b/server/routers/client/archiveClient.ts index a7cc29ebc..25ea06f7d 100644 --- a/server/routers/client/archiveClient.ts +++ b/server/routers/client/archiveClient.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: archiveClientSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function archiveClient( diff --git a/server/routers/client/blockClient.ts b/server/routers/client/blockClient.ts index 90adab008..1a7cb48c4 100644 --- a/server/routers/client/blockClient.ts +++ b/server/routers/client/blockClient.ts @@ -24,7 +24,22 @@ registry.registerPath({ request: { params: blockClientSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function blockClient( diff --git a/server/routers/client/createClient.ts b/server/routers/client/createClient.ts index 029f3c159..ddf8f3dbf 100644 --- a/server/routers/client/createClient.ts +++ b/server/routers/client/createClient.ts @@ -59,7 +59,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createClient( diff --git a/server/routers/client/createUserClient.ts b/server/routers/client/createUserClient.ts index e702796fd..c51c4fe6a 100644 --- a/server/routers/client/createUserClient.ts +++ b/server/routers/client/createUserClient.ts @@ -60,7 +60,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createUserClient( diff --git a/server/routers/client/deleteClient.ts b/server/routers/client/deleteClient.ts index d3672b0e2..21d6f1c9f 100644 --- a/server/routers/client/deleteClient.ts +++ b/server/routers/client/deleteClient.ts @@ -25,7 +25,22 @@ registry.registerPath({ request: { params: deleteClientSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteClient( diff --git a/server/routers/client/getClient.ts b/server/routers/client/getClient.ts index c97612b07..936d62b7d 100644 --- a/server/routers/client/getClient.ts +++ b/server/routers/client/getClient.ts @@ -253,7 +253,22 @@ registry.registerPath({ niceId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); registry.registerPath({ @@ -266,7 +281,22 @@ registry.registerPath({ clientId: z.number() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getClient( diff --git a/server/routers/client/listClients.ts b/server/routers/client/listClients.ts index f5d69857d..e763619b3 100644 --- a/server/routers/client/listClients.ts +++ b/server/routers/client/listClients.ts @@ -186,7 +186,22 @@ registry.registerPath({ query: listClientsSchema, params: listClientsParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listClients( diff --git a/server/routers/client/listUserDevices.ts b/server/routers/client/listUserDevices.ts index 567eb0d6b..82b52577e 100644 --- a/server/routers/client/listUserDevices.ts +++ b/server/routers/client/listUserDevices.ts @@ -213,7 +213,22 @@ registry.registerPath({ query: listUserDevicesSchema, params: listUserDevicesParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listUserDevices( diff --git a/server/routers/client/pickClientDefaults.ts b/server/routers/client/pickClientDefaults.ts index 5dffd77d7..a8093c4bb 100644 --- a/server/routers/client/pickClientDefaults.ts +++ b/server/routers/client/pickClientDefaults.ts @@ -27,7 +27,22 @@ registry.registerPath({ request: { params: pickClientDefaultsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function pickClientDefaults( diff --git a/server/routers/client/unarchiveClient.ts b/server/routers/client/unarchiveClient.ts index 8300b90df..e8b3aef5a 100644 --- a/server/routers/client/unarchiveClient.ts +++ b/server/routers/client/unarchiveClient.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: unarchiveClientSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function unarchiveClient( diff --git a/server/routers/client/unblockClient.ts b/server/routers/client/unblockClient.ts index 977ff6276..fa02394a5 100644 --- a/server/routers/client/unblockClient.ts +++ b/server/routers/client/unblockClient.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: unblockClientSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function unblockClient( diff --git a/server/routers/client/updateClient.ts b/server/routers/client/updateClient.ts index 5ff36ee8c..f8794960c 100644 --- a/server/routers/client/updateClient.ts +++ b/server/routers/client/updateClient.ts @@ -36,7 +36,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateClient( diff --git a/server/routers/domain/getDNSRecords.ts b/server/routers/domain/getDNSRecords.ts index 5a373a11a..8a557c6cf 100644 --- a/server/routers/domain/getDNSRecords.ts +++ b/server/routers/domain/getDNSRecords.ts @@ -37,7 +37,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getDNSRecords( diff --git a/server/routers/domain/getDomain.ts b/server/routers/domain/getDomain.ts index 3e5565f92..12967ebf2 100644 --- a/server/routers/domain/getDomain.ts +++ b/server/routers/domain/getDomain.ts @@ -39,7 +39,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getDomain( diff --git a/server/routers/domain/listDomains.ts b/server/routers/domain/listDomains.ts index 94dddb1cf..79a461ff4 100644 --- a/server/routers/domain/listDomains.ts +++ b/server/routers/domain/listDomains.ts @@ -67,7 +67,22 @@ registry.registerPath({ }), query: listDomainsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listDomains( diff --git a/server/routers/domain/updateDomain.ts b/server/routers/domain/updateDomain.ts index 64e78641d..477f17cbf 100644 --- a/server/routers/domain/updateDomain.ts +++ b/server/routers/domain/updateDomain.ts @@ -36,7 +36,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateOrgDomain( diff --git a/server/routers/idp/createIdpOrgPolicy.ts b/server/routers/idp/createIdpOrgPolicy.ts index da12bc12a..3fcee3ff6 100644 --- a/server/routers/idp/createIdpOrgPolicy.ts +++ b/server/routers/idp/createIdpOrgPolicy.ts @@ -38,7 +38,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createIdpOrgPolicy( diff --git a/server/routers/idp/createOidcIdp.ts b/server/routers/idp/createOidcIdp.ts index 0f0cc0cce..b3026b75d 100644 --- a/server/routers/idp/createOidcIdp.ts +++ b/server/routers/idp/createOidcIdp.ts @@ -48,7 +48,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createOidcIdp( diff --git a/server/routers/idp/deleteIdp.ts b/server/routers/idp/deleteIdp.ts index 8c15eada1..e6d330263 100644 --- a/server/routers/idp/deleteIdp.ts +++ b/server/routers/idp/deleteIdp.ts @@ -25,7 +25,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteIdp( diff --git a/server/routers/idp/deleteIdpOrgPolicy.ts b/server/routers/idp/deleteIdpOrgPolicy.ts index 6793474a8..716de4a9d 100644 --- a/server/routers/idp/deleteIdpOrgPolicy.ts +++ b/server/routers/idp/deleteIdpOrgPolicy.ts @@ -23,7 +23,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteIdpOrgPolicy( diff --git a/server/routers/idp/getIdp.ts b/server/routers/idp/getIdp.ts index db199f2d6..23f7990d5 100644 --- a/server/routers/idp/getIdp.ts +++ b/server/routers/idp/getIdp.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getIdp( diff --git a/server/routers/idp/listIdpOrgPolicies.ts b/server/routers/idp/listIdpOrgPolicies.ts index ecfd6f33a..99240c813 100644 --- a/server/routers/idp/listIdpOrgPolicies.ts +++ b/server/routers/idp/listIdpOrgPolicies.ts @@ -53,7 +53,22 @@ registry.registerPath({ params: paramsSchema, query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listIdpOrgPolicies( diff --git a/server/routers/idp/listIdps.ts b/server/routers/idp/listIdps.ts index ca0fd5fbf..3d88294a8 100644 --- a/server/routers/idp/listIdps.ts +++ b/server/routers/idp/listIdps.ts @@ -62,7 +62,22 @@ registry.registerPath({ request: { query: querySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listIdps( diff --git a/server/routers/idp/updateIdpOrgPolicy.ts b/server/routers/idp/updateIdpOrgPolicy.ts index 5a9f882d4..b36facac6 100644 --- a/server/routers/idp/updateIdpOrgPolicy.ts +++ b/server/routers/idp/updateIdpOrgPolicy.ts @@ -37,7 +37,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateIdpOrgPolicy( diff --git a/server/routers/idp/updateOidcIdp.ts b/server/routers/idp/updateOidcIdp.ts index 905b32013..8630ccf5d 100644 --- a/server/routers/idp/updateOidcIdp.ts +++ b/server/routers/idp/updateOidcIdp.ts @@ -54,7 +54,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateOidcIdp( diff --git a/server/routers/olm/createUserOlm.ts b/server/routers/olm/createUserOlm.ts index 105a94ff2..dde21ae15 100644 --- a/server/routers/olm/createUserOlm.ts +++ b/server/routers/olm/createUserOlm.ts @@ -43,7 +43,22 @@ export type CreateOlmResponse = { // }, // params: paramsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function createUserOlm( diff --git a/server/routers/olm/deleteUserOlm.ts b/server/routers/olm/deleteUserOlm.ts index fb1f5604c..412e85c96 100644 --- a/server/routers/olm/deleteUserOlm.ts +++ b/server/routers/olm/deleteUserOlm.ts @@ -28,7 +28,22 @@ const paramsSchema = z // request: { // params: paramsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function deleteUserOlm( diff --git a/server/routers/olm/getUserOlm.ts b/server/routers/olm/getUserOlm.ts index f7ba038a7..cf48bb514 100644 --- a/server/routers/olm/getUserOlm.ts +++ b/server/routers/olm/getUserOlm.ts @@ -30,7 +30,22 @@ const querySchema = z.object({ // request: { // params: paramsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function getUserOlm( diff --git a/server/routers/olm/listUserOlms.ts b/server/routers/olm/listUserOlms.ts index ac92afc87..b4ba02ef2 100644 --- a/server/routers/olm/listUserOlms.ts +++ b/server/routers/olm/listUserOlms.ts @@ -41,7 +41,22 @@ const paramsSchema = z // query: querySchema, // params: paramsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export type ListUserOlmsResponse = { diff --git a/server/routers/org/checkOrgUserAccess.ts b/server/routers/org/checkOrgUserAccess.ts index 19e39c4fe..c40c85aaa 100644 --- a/server/routers/org/checkOrgUserAccess.ts +++ b/server/routers/org/checkOrgUserAccess.ts @@ -83,7 +83,22 @@ registry.registerPath({ request: { params: paramsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function checkOrgUserAccess( diff --git a/server/routers/org/createOrg.ts b/server/routers/org/createOrg.ts index 5fccbcd1f..a195e3a33 100644 --- a/server/routers/org/createOrg.ts +++ b/server/routers/org/createOrg.ts @@ -74,7 +74,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createOrg( diff --git a/server/routers/org/deleteOrg.ts b/server/routers/org/deleteOrg.ts index 7de021622..5beffb536 100644 --- a/server/routers/org/deleteOrg.ts +++ b/server/routers/org/deleteOrg.ts @@ -24,7 +24,22 @@ registry.registerPath({ request: { params: deleteOrgSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteOrg( diff --git a/server/routers/org/getOrg.ts b/server/routers/org/getOrg.ts index a30dcc1ce..112f08604 100644 --- a/server/routers/org/getOrg.ts +++ b/server/routers/org/getOrg.ts @@ -26,7 +26,22 @@ registry.registerPath({ request: { params: getOrgSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getOrg( diff --git a/server/routers/org/listOrgs.ts b/server/routers/org/listOrgs.ts index 5819dc254..187e6c983 100644 --- a/server/routers/org/listOrgs.ts +++ b/server/routers/org/listOrgs.ts @@ -33,7 +33,22 @@ registry.registerPath({ request: { query: listOrgsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export type ListOrgsResponse = { diff --git a/server/routers/org/listUserOrgs.ts b/server/routers/org/listUserOrgs.ts index 8e6ce649d..5878ba679 100644 --- a/server/routers/org/listUserOrgs.ts +++ b/server/routers/org/listUserOrgs.ts @@ -37,7 +37,22 @@ const listOrgsSchema = z.object({ // request: { // query: listOrgsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); type ResponseOrg = Org & { diff --git a/server/routers/org/resetOrgBandwidth.ts b/server/routers/org/resetOrgBandwidth.ts index b98e2e406..41ad761e3 100644 --- a/server/routers/org/resetOrgBandwidth.ts +++ b/server/routers/org/resetOrgBandwidth.ts @@ -21,7 +21,22 @@ registry.registerPath({ request: { params: resetOrgBandwidthParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function resetOrgBandwidth( diff --git a/server/routers/org/updateOrg.ts b/server/routers/org/updateOrg.ts index 4eca9a9a6..1eb77f277 100644 --- a/server/routers/org/updateOrg.ts +++ b/server/routers/org/updateOrg.ts @@ -61,7 +61,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateOrg( diff --git a/server/routers/resource/addEmailToResourceWhitelist.ts b/server/routers/resource/addEmailToResourceWhitelist.ts index bf1ad40dd..1ad10000f 100644 --- a/server/routers/resource/addEmailToResourceWhitelist.ts +++ b/server/routers/resource/addEmailToResourceWhitelist.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addEmailToResourceWhitelist( diff --git a/server/routers/resource/addRoleToResource.ts b/server/routers/resource/addRoleToResource.ts index 7a5c8fb63..8192f779c 100644 --- a/server/routers/resource/addRoleToResource.ts +++ b/server/routers/resource/addRoleToResource.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addRoleToResource( diff --git a/server/routers/resource/addUserToResource.ts b/server/routers/resource/addUserToResource.ts index 9880d9c27..3a75b0043 100644 --- a/server/routers/resource/addUserToResource.ts +++ b/server/routers/resource/addUserToResource.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addUserToResource( diff --git a/server/routers/resource/createResource.ts b/server/routers/resource/createResource.ts index f8b7551e9..cbe86e829 100644 --- a/server/routers/resource/createResource.ts +++ b/server/routers/resource/createResource.ts @@ -96,7 +96,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createResource( diff --git a/server/routers/resource/createResourceRule.ts b/server/routers/resource/createResourceRule.ts index b75055414..19f0449fd 100644 --- a/server/routers/resource/createResourceRule.ts +++ b/server/routers/resource/createResourceRule.ts @@ -43,7 +43,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createResourceRule( diff --git a/server/routers/resource/deleteResource.ts b/server/routers/resource/deleteResource.ts index 5353d85dd..b44ad862b 100644 --- a/server/routers/resource/deleteResource.ts +++ b/server/routers/resource/deleteResource.ts @@ -26,7 +26,22 @@ registry.registerPath({ request: { params: deleteResourceSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteResource( diff --git a/server/routers/resource/deleteResourceRule.ts b/server/routers/resource/deleteResourceRule.ts index 64ed684b3..ef40ecaab 100644 --- a/server/routers/resource/deleteResourceRule.ts +++ b/server/routers/resource/deleteResourceRule.ts @@ -23,7 +23,22 @@ registry.registerPath({ request: { params: deleteResourceRuleSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteResourceRule( diff --git a/server/routers/resource/getResource.ts b/server/routers/resource/getResource.ts index 7a52c0a85..3a650578c 100644 --- a/server/routers/resource/getResource.ts +++ b/server/routers/resource/getResource.ts @@ -60,7 +60,22 @@ registry.registerPath({ niceId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); registry.registerPath({ @@ -73,7 +88,22 @@ registry.registerPath({ resourceId: z.number() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getResource( diff --git a/server/routers/resource/getResourceWhitelist.ts b/server/routers/resource/getResourceWhitelist.ts index a33899a27..bb6105b0b 100644 --- a/server/routers/resource/getResourceWhitelist.ts +++ b/server/routers/resource/getResourceWhitelist.ts @@ -35,7 +35,22 @@ registry.registerPath({ request: { params: getResourceWhitelistSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getResourceWhitelist( diff --git a/server/routers/resource/listAllResourceNames.ts b/server/routers/resource/listAllResourceNames.ts index 37ae945fd..7c4f18b35 100644 --- a/server/routers/resource/listAllResourceNames.ts +++ b/server/routers/resource/listAllResourceNames.ts @@ -39,7 +39,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listAllResourceNames( diff --git a/server/routers/resource/listResourceRoles.ts b/server/routers/resource/listResourceRoles.ts index 513bffdb0..ffff8c602 100644 --- a/server/routers/resource/listResourceRoles.ts +++ b/server/routers/resource/listResourceRoles.ts @@ -39,7 +39,22 @@ registry.registerPath({ request: { params: listResourceRolesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listResourceRoles( diff --git a/server/routers/resource/listResourceRules.ts b/server/routers/resource/listResourceRules.ts index 067133219..b1b2581ed 100644 --- a/server/routers/resource/listResourceRules.ts +++ b/server/routers/resource/listResourceRules.ts @@ -61,7 +61,22 @@ registry.registerPath({ params: listResourceRulesParamsSchema, query: listResourceRulesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listResourceRules( diff --git a/server/routers/resource/listResourceUsers.ts b/server/routers/resource/listResourceUsers.ts index 083ead537..292edf3cd 100644 --- a/server/routers/resource/listResourceUsers.ts +++ b/server/routers/resource/listResourceUsers.ts @@ -42,7 +42,22 @@ registry.registerPath({ request: { params: listResourceUsersSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listResourceUsers( diff --git a/server/routers/resource/listResources.ts b/server/routers/resource/listResources.ts index 16a82e400..13ade46d2 100644 --- a/server/routers/resource/listResources.ts +++ b/server/routers/resource/listResources.ts @@ -228,7 +228,22 @@ registry.registerPath({ }), query: listResourcesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listResources( diff --git a/server/routers/resource/listUserResourceAliases.ts b/server/routers/resource/listUserResourceAliases.ts index 663700e64..8f6ef6068 100644 --- a/server/routers/resource/listUserResourceAliases.ts +++ b/server/routers/resource/listUserResourceAliases.ts @@ -76,7 +76,22 @@ export type ListUserResourceAliasesResponse = PaginatedResponse<{ // }), // query: listUserResourceAliasesQuerySchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function listUserResourceAliases( diff --git a/server/routers/resource/removeEmailFromResourceWhitelist.ts b/server/routers/resource/removeEmailFromResourceWhitelist.ts index e5bfc0683..4e7dc8904 100644 --- a/server/routers/resource/removeEmailFromResourceWhitelist.ts +++ b/server/routers/resource/removeEmailFromResourceWhitelist.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeEmailFromResourceWhitelist( diff --git a/server/routers/resource/removeRoleFromResource.ts b/server/routers/resource/removeRoleFromResource.ts index eef55277b..66da1d377 100644 --- a/server/routers/resource/removeRoleFromResource.ts +++ b/server/routers/resource/removeRoleFromResource.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeRoleFromResource( diff --git a/server/routers/resource/removeUserFromResource.ts b/server/routers/resource/removeUserFromResource.ts index 152316e62..17f2380a2 100644 --- a/server/routers/resource/removeUserFromResource.ts +++ b/server/routers/resource/removeUserFromResource.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeUserFromResource( diff --git a/server/routers/resource/setResourceHeaderAuth.ts b/server/routers/resource/setResourceHeaderAuth.ts index 07f7948b5..cec9ad96a 100644 --- a/server/routers/resource/setResourceHeaderAuth.ts +++ b/server/routers/resource/setResourceHeaderAuth.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourceHeaderAuth( diff --git a/server/routers/resource/setResourcePassword.ts b/server/routers/resource/setResourcePassword.ts index 4447d393e..0f89bccd4 100644 --- a/server/routers/resource/setResourcePassword.ts +++ b/server/routers/resource/setResourcePassword.ts @@ -36,7 +36,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourcePassword( diff --git a/server/routers/resource/setResourcePincode.ts b/server/routers/resource/setResourcePincode.ts index 6cbfbe9a4..9135529fb 100644 --- a/server/routers/resource/setResourcePincode.ts +++ b/server/routers/resource/setResourcePincode.ts @@ -40,7 +40,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourcePincode( diff --git a/server/routers/resource/setResourceRoles.ts b/server/routers/resource/setResourceRoles.ts index 80880293d..0015e373a 100644 --- a/server/routers/resource/setResourceRoles.ts +++ b/server/routers/resource/setResourceRoles.ts @@ -34,7 +34,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourceRoles( diff --git a/server/routers/resource/setResourceUsers.ts b/server/routers/resource/setResourceUsers.ts index 288d1ae02..4c2b7457a 100644 --- a/server/routers/resource/setResourceUsers.ts +++ b/server/routers/resource/setResourceUsers.ts @@ -34,7 +34,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourceUsers( diff --git a/server/routers/resource/setResourceWhitelist.ts b/server/routers/resource/setResourceWhitelist.ts index b7522df84..ff6c9fd02 100644 --- a/server/routers/resource/setResourceWhitelist.ts +++ b/server/routers/resource/setResourceWhitelist.ts @@ -43,7 +43,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setResourceWhitelist( diff --git a/server/routers/resource/updateResource.ts b/server/routers/resource/updateResource.ts index dd405df0d..2b67c6b91 100644 --- a/server/routers/resource/updateResource.ts +++ b/server/routers/resource/updateResource.ts @@ -201,7 +201,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateResource( diff --git a/server/routers/resource/updateResourceRule.ts b/server/routers/resource/updateResourceRule.ts index 7fae5c959..92b251b42 100644 --- a/server/routers/resource/updateResourceRule.ts +++ b/server/routers/resource/updateResourceRule.ts @@ -50,7 +50,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateResourceRule( diff --git a/server/routers/role/createRole.ts b/server/routers/role/createRole.ts index 1fad18d72..d7aceb743 100644 --- a/server/routers/role/createRole.ts +++ b/server/routers/role/createRole.ts @@ -56,7 +56,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createRole( diff --git a/server/routers/role/deleteRole.ts b/server/routers/role/deleteRole.ts index 28811d81e..d3b56b37d 100644 --- a/server/routers/role/deleteRole.ts +++ b/server/routers/role/deleteRole.ts @@ -14,7 +14,7 @@ const deleteRoleSchema = z.strictObject({ roleId: z.coerce.number().int().positive() }); -const deelteRoleBodySchema = z.strictObject({ +const deleteRoleBodySchema = z.strictObject({ roleId: z.coerce.number().int().positive() }); @@ -28,12 +28,27 @@ registry.registerPath({ body: { content: { "application/json": { - schema: deelteRoleBodySchema + schema: deleteRoleBodySchema } } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteRole( @@ -52,7 +67,7 @@ export async function deleteRole( ); } - const parsedBody = deelteRoleBodySchema.safeParse(req.body); + const parsedBody = deleteRoleBodySchema.safeParse(req.body); if (!parsedBody.success) { return next( createHttpError( diff --git a/server/routers/role/getRole.ts b/server/routers/role/getRole.ts index a96926ff3..c90471551 100644 --- a/server/routers/role/getRole.ts +++ b/server/routers/role/getRole.ts @@ -22,7 +22,22 @@ registry.registerPath({ request: { params: getRoleSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getRole( diff --git a/server/routers/role/listRoles.ts b/server/routers/role/listRoles.ts index ba46e40c4..ace5e1fc1 100644 --- a/server/routers/role/listRoles.ts +++ b/server/routers/role/listRoles.ts @@ -98,7 +98,22 @@ registry.registerPath({ params: listRolesParamsSchema, query: listRolesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listRoles( diff --git a/server/routers/role/updateRole.ts b/server/routers/role/updateRole.ts index feb5ecadc..29f43850f 100644 --- a/server/routers/role/updateRole.ts +++ b/server/routers/role/updateRole.ts @@ -53,7 +53,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateRole( diff --git a/server/routers/site/createSite.ts b/server/routers/site/createSite.ts index 29eb4935d..7c8cc7a6b 100644 --- a/server/routers/site/createSite.ts +++ b/server/routers/site/createSite.ts @@ -78,7 +78,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createSite( diff --git a/server/routers/site/deleteSite.ts b/server/routers/site/deleteSite.ts index 4c0c52dbe..44fb63e30 100644 --- a/server/routers/site/deleteSite.ts +++ b/server/routers/site/deleteSite.ts @@ -27,7 +27,22 @@ registry.registerPath({ request: { params: deleteSiteSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteSite( diff --git a/server/routers/site/getSite.ts b/server/routers/site/getSite.ts index a16547b8d..020fbd36f 100644 --- a/server/routers/site/getSite.ts +++ b/server/routers/site/getSite.ts @@ -61,7 +61,22 @@ registry.registerPath({ niceId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); registry.registerPath({ @@ -74,7 +89,22 @@ registry.registerPath({ siteId: z.number() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getSite( diff --git a/server/routers/site/listSites.ts b/server/routers/site/listSites.ts index fc4ea5be1..da530f66e 100644 --- a/server/routers/site/listSites.ts +++ b/server/routers/site/listSites.ts @@ -248,7 +248,22 @@ registry.registerPath({ params: listSitesParamsSchema, query: listSitesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listSites( diff --git a/server/routers/site/pickSiteDefaults.ts b/server/routers/site/pickSiteDefaults.ts index 4e6e3bb17..a35f413f0 100644 --- a/server/routers/site/pickSiteDefaults.ts +++ b/server/routers/site/pickSiteDefaults.ts @@ -41,7 +41,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); const pickSiteDefaultsSchema = z.strictObject({ diff --git a/server/routers/site/updateSite.ts b/server/routers/site/updateSite.ts index 22cd16f7b..1939d6967 100644 --- a/server/routers/site/updateSite.ts +++ b/server/routers/site/updateSite.ts @@ -53,7 +53,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateSite( diff --git a/server/routers/siteResource/addClientToSiteResource.ts b/server/routers/siteResource/addClientToSiteResource.ts index 4a67df94f..03145f672 100644 --- a/server/routers/siteResource/addClientToSiteResource.ts +++ b/server/routers/siteResource/addClientToSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addClientToSiteResource( diff --git a/server/routers/siteResource/addRoleToSiteResource.ts b/server/routers/siteResource/addRoleToSiteResource.ts index f6501463b..8f8bf27fb 100644 --- a/server/routers/siteResource/addRoleToSiteResource.ts +++ b/server/routers/siteResource/addRoleToSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addRoleToSiteResource( diff --git a/server/routers/siteResource/addUserToSiteResource.ts b/server/routers/siteResource/addUserToSiteResource.ts index 68151077c..bc6e6bcd9 100644 --- a/server/routers/siteResource/addUserToSiteResource.ts +++ b/server/routers/siteResource/addUserToSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addUserToSiteResource( diff --git a/server/routers/siteResource/batchAddClientToSiteResources.ts b/server/routers/siteResource/batchAddClientToSiteResources.ts index 8ee4b3068..ed50a2b25 100644 --- a/server/routers/siteResource/batchAddClientToSiteResources.ts +++ b/server/routers/siteResource/batchAddClientToSiteResources.ts @@ -49,7 +49,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function batchAddClientToSiteResources( diff --git a/server/routers/siteResource/createSiteResource.ts b/server/routers/siteResource/createSiteResource.ts index 9d0f786b3..dde929680 100644 --- a/server/routers/siteResource/createSiteResource.ts +++ b/server/routers/siteResource/createSiteResource.ts @@ -42,12 +42,7 @@ const createSiteResourceParamsSchema = z.strictObject({ const createSiteResourceSchema = z .strictObject({ name: z.string().min(1).max(255), - niceId: z.string().optional() - .openapi({ - description: - "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", - example: "service.example.internal" - }), + niceId: z.string().optional(), // protocol: z.enum(["tcp", "udp"]).optional(), mode: z.enum(["host", "cidr", "http"]), ssl: z.boolean().optional(), // only used for http mode @@ -64,7 +59,12 @@ const createSiteResourceSchema = z /^(?:[a-zA-Z0-9*?](?:[a-zA-Z0-9*?-]{0,61}[a-zA-Z0-9*?])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/, "Alias must be a fully qualified domain name with optional wildcards (e.g., example.com, *.example.com, host-0?.example.internal)" ) - .optional(), + .optional() + .openapi({ + description: + "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", + example: "service.example.internal" + }), userIds: z.array(z.string()), roleIds: z.array(z.int()), clientIds: z.array(z.int()), @@ -164,7 +164,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createSiteResource( diff --git a/server/routers/siteResource/deleteSiteResource.ts b/server/routers/siteResource/deleteSiteResource.ts index 4326c6638..82f80b875 100644 --- a/server/routers/siteResource/deleteSiteResource.ts +++ b/server/routers/siteResource/deleteSiteResource.ts @@ -27,7 +27,22 @@ registry.registerPath({ request: { params: deleteSiteResourceParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteSiteResource( diff --git a/server/routers/siteResource/getSiteResource.ts b/server/routers/siteResource/getSiteResource.ts index 2e3dfe87b..d923cb843 100644 --- a/server/routers/siteResource/getSiteResource.ts +++ b/server/routers/siteResource/getSiteResource.ts @@ -69,7 +69,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); registry.registerPath({ @@ -83,7 +98,22 @@ registry.registerPath({ orgId: z.string() }) }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getSiteResource( diff --git a/server/routers/siteResource/listAllSiteResourcesByOrg.ts b/server/routers/siteResource/listAllSiteResourcesByOrg.ts index c7099de40..c7bafbe4c 100644 --- a/server/routers/siteResource/listAllSiteResourcesByOrg.ts +++ b/server/routers/siteResource/listAllSiteResourcesByOrg.ts @@ -197,7 +197,22 @@ registry.registerPath({ params: listAllSiteResourcesByOrgParamsSchema, query: listAllSiteResourcesByOrgQuerySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listAllSiteResourcesByOrg( diff --git a/server/routers/siteResource/listSiteResourceClients.ts b/server/routers/siteResource/listSiteResourceClients.ts index 867e66b49..c95874b21 100644 --- a/server/routers/siteResource/listSiteResourceClients.ts +++ b/server/routers/siteResource/listSiteResourceClients.ts @@ -43,7 +43,22 @@ registry.registerPath({ request: { params: listSiteResourceClientsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listSiteResourceClients( diff --git a/server/routers/siteResource/listSiteResourceRoles.ts b/server/routers/siteResource/listSiteResourceRoles.ts index 679a93f7e..6a451b192 100644 --- a/server/routers/siteResource/listSiteResourceRoles.ts +++ b/server/routers/siteResource/listSiteResourceRoles.ts @@ -44,7 +44,22 @@ registry.registerPath({ request: { params: listSiteResourceRolesSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listSiteResourceRoles( diff --git a/server/routers/siteResource/listSiteResourceUsers.ts b/server/routers/siteResource/listSiteResourceUsers.ts index e50d8684e..d6846b9eb 100644 --- a/server/routers/siteResource/listSiteResourceUsers.ts +++ b/server/routers/siteResource/listSiteResourceUsers.ts @@ -47,7 +47,22 @@ registry.registerPath({ request: { params: listSiteResourceUsersSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listSiteResourceUsers( diff --git a/server/routers/siteResource/listSiteResources.ts b/server/routers/siteResource/listSiteResources.ts index f199e815f..1cebb281f 100644 --- a/server/routers/siteResource/listSiteResources.ts +++ b/server/routers/siteResource/listSiteResources.ts @@ -63,7 +63,22 @@ registry.registerPath({ params: listSiteResourcesParamsSchema, query: listSiteResourcesQuerySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listSiteResources( diff --git a/server/routers/siteResource/removeClientFromSiteResource.ts b/server/routers/siteResource/removeClientFromSiteResource.ts index 51e54dd92..906f07902 100644 --- a/server/routers/siteResource/removeClientFromSiteResource.ts +++ b/server/routers/siteResource/removeClientFromSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeClientFromSiteResource( diff --git a/server/routers/siteResource/removeRoleFromSiteResource.ts b/server/routers/siteResource/removeRoleFromSiteResource.ts index 19478ed0f..00aba1114 100644 --- a/server/routers/siteResource/removeRoleFromSiteResource.ts +++ b/server/routers/siteResource/removeRoleFromSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeRoleFromSiteResource( diff --git a/server/routers/siteResource/removeUserFromSiteResource.ts b/server/routers/siteResource/removeUserFromSiteResource.ts index 70bb5e22e..9c25ddcf2 100644 --- a/server/routers/siteResource/removeUserFromSiteResource.ts +++ b/server/routers/siteResource/removeUserFromSiteResource.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeUserFromSiteResource( diff --git a/server/routers/siteResource/setSiteResourceClients.ts b/server/routers/siteResource/setSiteResourceClients.ts index 7aff3875f..cde78d052 100644 --- a/server/routers/siteResource/setSiteResourceClients.ts +++ b/server/routers/siteResource/setSiteResourceClients.ts @@ -41,7 +41,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setSiteResourceClients( diff --git a/server/routers/siteResource/setSiteResourceRoles.ts b/server/routers/siteResource/setSiteResourceRoles.ts index a1ee80b40..3e83efea2 100644 --- a/server/routers/siteResource/setSiteResourceRoles.ts +++ b/server/routers/siteResource/setSiteResourceRoles.ts @@ -42,7 +42,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setSiteResourceRoles( diff --git a/server/routers/siteResource/setSiteResourceUsers.ts b/server/routers/siteResource/setSiteResourceUsers.ts index 109e8c429..37e3152b7 100644 --- a/server/routers/siteResource/setSiteResourceUsers.ts +++ b/server/routers/siteResource/setSiteResourceUsers.ts @@ -42,7 +42,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function setSiteResourceUsers( diff --git a/server/routers/siteResource/updateSiteResource.ts b/server/routers/siteResource/updateSiteResource.ts index 5e8695238..74e616362 100644 --- a/server/routers/siteResource/updateSiteResource.ts +++ b/server/routers/siteResource/updateSiteResource.ts @@ -58,12 +58,7 @@ const updateSiteResourceSchema = z // mode: z.enum(["host", "cidr", "port"]).optional(), mode: z.enum(["host", "cidr", "http"]).optional(), ssl: z.boolean().optional(), - scheme: z.enum(["http", "https"]).nullish() - .openapi({ - description: - "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", - example: "service.example.internal" - }), + scheme: z.enum(["http", "https"]).nullish(), // proxyPort: z.int().positive().nullish(), destinationPort: z.int().positive().nullish(), destination: z.string().min(1).optional(), @@ -74,7 +69,12 @@ const updateSiteResourceSchema = z /^(?:[a-zA-Z0-9*?](?:[a-zA-Z0-9*?-]{0,61}[a-zA-Z0-9*?])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/, "Alias must be a fully qualified domain name with optional wildcards (e.g., example.internal, *.example.internal, host-0?.example.internal)" ) - .nullish(), + .nullish() + .openapi({ + description: + "Fully qualified domain name with optional wildcards, e.g., example.internal, *.example.internal, or host-0?.example.internal", + example: "service.example.internal" + }), userIds: z.array(z.string()), roleIds: z.array(z.int()), clientIds: z.array(z.int()), @@ -175,7 +175,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateSiteResource( diff --git a/server/routers/target/createTarget.ts b/server/routers/target/createTarget.ts index 31755eae8..8de26214b 100644 --- a/server/routers/target/createTarget.ts +++ b/server/routers/target/createTarget.ts @@ -81,7 +81,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createTarget( diff --git a/server/routers/target/deleteTarget.ts b/server/routers/target/deleteTarget.ts index c9ef0eef2..dc7f19dac 100644 --- a/server/routers/target/deleteTarget.ts +++ b/server/routers/target/deleteTarget.ts @@ -24,7 +24,22 @@ registry.registerPath({ request: { params: deleteTargetSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function deleteTarget( diff --git a/server/routers/target/getTarget.ts b/server/routers/target/getTarget.ts index e889a2149..37fa8b7f0 100644 --- a/server/routers/target/getTarget.ts +++ b/server/routers/target/getTarget.ts @@ -27,7 +27,22 @@ registry.registerPath({ request: { params: getTargetSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getTarget( diff --git a/server/routers/target/listTargets.ts b/server/routers/target/listTargets.ts index a64c5abdc..47e9cdea5 100644 --- a/server/routers/target/listTargets.ts +++ b/server/routers/target/listTargets.ts @@ -96,7 +96,22 @@ registry.registerPath({ params: listTargetsParamsSchema, query: listTargetsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listTargets( diff --git a/server/routers/target/updateTarget.ts b/server/routers/target/updateTarget.ts index 6eb319079..4b356c918 100644 --- a/server/routers/target/updateTarget.ts +++ b/server/routers/target/updateTarget.ts @@ -80,7 +80,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateTarget( diff --git a/server/routers/user/addUserRoleLegacy.ts b/server/routers/user/addUserRoleLegacy.ts index 2b5abf08f..201f7a7e4 100644 --- a/server/routers/user/addUserRoleLegacy.ts +++ b/server/routers/user/addUserRoleLegacy.ts @@ -27,7 +27,22 @@ registry.registerPath({ request: { params: addUserRoleLegacyParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function addUserRoleLegacy( diff --git a/server/routers/user/adminGetUser.ts b/server/routers/user/adminGetUser.ts index 06045c770..1bc674339 100644 --- a/server/routers/user/adminGetUser.ts +++ b/server/routers/user/adminGetUser.ts @@ -21,7 +21,22 @@ registry.registerPath({ request: { params: adminGetUserSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); async function queryUser(userId: string) { diff --git a/server/routers/user/adminListUsers.ts b/server/routers/user/adminListUsers.ts index 3d7bac4b3..8200b6f0f 100644 --- a/server/routers/user/adminListUsers.ts +++ b/server/routers/user/adminListUsers.ts @@ -137,7 +137,22 @@ registry.registerPath({ request: { query: listUsersSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function adminListUsers( diff --git a/server/routers/user/adminUpdateUser2FA.ts b/server/routers/user/adminUpdateUser2FA.ts index 7fb37d010..da8127adf 100644 --- a/server/routers/user/adminUpdateUser2FA.ts +++ b/server/routers/user/adminUpdateUser2FA.ts @@ -38,7 +38,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateUser2FA( diff --git a/server/routers/user/createOrgUser.ts b/server/routers/user/createOrgUser.ts index ed3824b24..e1c19c8dd 100644 --- a/server/routers/user/createOrgUser.ts +++ b/server/routers/user/createOrgUser.ts @@ -69,7 +69,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function createOrgUser( diff --git a/server/routers/user/getOrgUser.ts b/server/routers/user/getOrgUser.ts index af900150b..4a03edd94 100644 --- a/server/routers/user/getOrgUser.ts +++ b/server/routers/user/getOrgUser.ts @@ -81,7 +81,22 @@ registry.registerPath({ request: { params: getOrgUserParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getOrgUser( diff --git a/server/routers/user/getOrgUserByUsername.ts b/server/routers/user/getOrgUserByUsername.ts index a6a764a54..af5ad3feb 100644 --- a/server/routers/user/getOrgUserByUsername.ts +++ b/server/routers/user/getOrgUserByUsername.ts @@ -40,7 +40,22 @@ registry.registerPath({ params: getOrgUserByUsernameParamsSchema, query: getOrgUserByUsernameQuerySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function getOrgUserByUsername( diff --git a/server/routers/user/inviteUser.ts b/server/routers/user/inviteUser.ts index b11586e69..b7fa81a74 100644 --- a/server/routers/user/inviteUser.ts +++ b/server/routers/user/inviteUser.ts @@ -83,7 +83,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function inviteUser( diff --git a/server/routers/user/listInvitations.ts b/server/routers/user/listInvitations.ts index 1f4bcc02c..df8663d1a 100644 --- a/server/routers/user/listInvitations.ts +++ b/server/routers/user/listInvitations.ts @@ -101,7 +101,22 @@ registry.registerPath({ params: listInvitationsParamsSchema, query: listInvitationsQuerySchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listInvitations( diff --git a/server/routers/user/listUsers.ts b/server/routers/user/listUsers.ts index 42a62636d..32e717b46 100644 --- a/server/routers/user/listUsers.ts +++ b/server/routers/user/listUsers.ts @@ -150,7 +150,22 @@ registry.registerPath({ params: listUsersParamsSchema, query: listUsersSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function listUsers( diff --git a/server/routers/user/removeInvitation.ts b/server/routers/user/removeInvitation.ts index 0f76fd30c..c8b897f71 100644 --- a/server/routers/user/removeInvitation.ts +++ b/server/routers/user/removeInvitation.ts @@ -23,7 +23,22 @@ registry.registerPath({ request: { params: removeInvitationParamsSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeInvitation( diff --git a/server/routers/user/removeUserOrg.ts b/server/routers/user/removeUserOrg.ts index fcb3313a8..982aa495d 100644 --- a/server/routers/user/removeUserOrg.ts +++ b/server/routers/user/removeUserOrg.ts @@ -38,7 +38,22 @@ registry.registerPath({ request: { params: removeUserSchema }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function removeUserOrg( diff --git a/server/routers/user/updateOrgUser.ts b/server/routers/user/updateOrgUser.ts index a95c3fb5e..dd3ba4a9d 100644 --- a/server/routers/user/updateOrgUser.ts +++ b/server/routers/user/updateOrgUser.ts @@ -37,7 +37,22 @@ registry.registerPath({ } } }, - responses: {} + responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } }); export async function updateOrgUser( diff --git a/server/routers/ws/checkRoundTripMessage.ts b/server/routers/ws/checkRoundTripMessage.ts index 9c832db5d..06d6faf66 100644 --- a/server/routers/ws/checkRoundTripMessage.ts +++ b/server/routers/ws/checkRoundTripMessage.ts @@ -27,7 +27,22 @@ const checkRoundTripMessageParamsSchema = z // request: { // params: checkRoundTripMessageParamsSchema // }, -// responses: {} +// responses: { + 200: { + description: "Successful response", + content: { + "application/json": { + schema: z.object({ + data: z.unknown().nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }) + } + } + } + } // }); export async function checkRoundTripMessage( From 15a9eb28d9d1ac51e7dd7e2567a5c43c82d8404a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 17 May 2026 21:25:53 +0000 Subject: [PATCH 04/11] Add concrete OpenAPI data schemas for selected routes Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/7b395a8e-7fae-4f4d-952e-4030fea08262 Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com> --- server/lib/openapi/createApiResponseSchema.ts | 11 ++++++ .../routers/alertRule/updateAlertRule.ts | 11 +++--- server/private/routers/billing/getOrgUsage.ts | 32 ++++++++--------- .../routers/domain/listDomainNamespaces.ts | 25 +++++++++---- .../createEventStreamingDestination.ts | 11 +++--- .../listEventStreamingDestinations.ts | 36 +++++++++++++++---- .../updateEventStreamingDestination.ts | 11 +++--- .../routers/healthChecks/createHealthCheck.ts | 11 +++--- .../routers/healthChecks/updateHealthCheck.ts | 11 +++--- .../routers/orgIdp/updateOrgOidcIdp.ts | 11 +++--- server/private/routers/ssh/signSshKey.ts | 32 ++++++++--------- server/routers/apiKeys/createOrgApiKey.ts | 11 +++--- server/routers/apiKeys/listApiKeyActions.ts | 24 +++++++++---- server/routers/apiKeys/listOrgApiKeys.ts | 28 +++++++++++---- server/routers/auth/lookupUser.ts | 32 ++++++++--------- server/routers/client/pickClientDefaults.ts | 11 +++--- server/routers/domain/listDomains.ts | 31 ++++++++++++---- server/routers/domain/updateDomain.ts | 11 +++--- server/routers/idp/createIdpOrgPolicy.ts | 11 +++--- server/routers/idp/createOidcIdp.ts | 11 +++--- server/routers/idp/listIdpOrgPolicies.ts | 26 ++++++++++---- server/routers/idp/listIdps.ts | 28 +++++++++++---- server/routers/idp/updateIdpOrgPolicy.ts | 11 +++--- server/routers/idp/updateOidcIdp.ts | 11 +++--- server/routers/olm/createUserOlm.ts | 32 ++++++++--------- server/routers/olm/deleteUserOlm.ts | 32 ++++++++--------- server/routers/olm/getUserOlm.ts | 32 ++++++++--------- server/routers/olm/listUserOlms.ts | 32 ++++++++--------- server/routers/org/getOrg.ts | 11 +++--- server/routers/org/listOrgs.ts | 18 ++++++---- server/routers/org/listUserOrgs.ts | 32 ++++++++--------- .../resource/listUserResourceAliases.ts | 32 ++++++++--------- server/routers/site/pickSiteDefaults.ts | 11 +++--- server/routers/user/adminUpdateUser2FA.ts | 11 +++--- server/routers/user/createOrgUser.ts | 11 +++--- server/routers/user/inviteUser.ts | 11 +++--- server/routers/ws/checkRoundTripMessage.ts | 32 ++++++++--------- 37 files changed, 403 insertions(+), 342 deletions(-) create mode 100644 server/lib/openapi/createApiResponseSchema.ts diff --git a/server/lib/openapi/createApiResponseSchema.ts b/server/lib/openapi/createApiResponseSchema.ts new file mode 100644 index 000000000..32ce22f5f --- /dev/null +++ b/server/lib/openapi/createApiResponseSchema.ts @@ -0,0 +1,11 @@ +import { z } from "zod"; + +export function createApiResponseSchema(dataSchema: T) { + return z.object({ + data: dataSchema.nullable(), + success: z.boolean(), + error: z.boolean(), + message: z.string(), + status: z.number() + }); +} diff --git a/server/private/routers/alertRule/updateAlertRule.ts b/server/private/routers/alertRule/updateAlertRule.ts index f36dcc7e3..d4fdaf87b 100644 --- a/server/private/routers/alertRule/updateAlertRule.ts +++ b/server/private/routers/alertRule/updateAlertRule.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { alertRules, @@ -148,6 +149,8 @@ const bodySchema = z export type UpdateAlertRuleResponse = { alertRuleId: number; }; +const UpdateAlertRuleResponseDataSchema = z.object({alertRuleId: z.number()}); + registry.registerPath({ method: "post", @@ -169,13 +172,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateAlertRuleResponseDataSchema) } } } diff --git a/server/private/routers/billing/getOrgUsage.ts b/server/private/routers/billing/getOrgUsage.ts index e64b5ec19..ad2102df5 100644 --- a/server/private/routers/billing/getOrgUsage.ts +++ b/server/private/routers/billing/getOrgUsage.ts @@ -39,22 +39,22 @@ const getOrgSchema = z.strictObject({ // request: { // params: getOrgSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function getOrgUsage( diff --git a/server/private/routers/domain/listDomainNamespaces.ts b/server/private/routers/domain/listDomainNamespaces.ts index 21c454249..88e8b7bd0 100644 --- a/server/private/routers/domain/listDomainNamespaces.ts +++ b/server/private/routers/domain/listDomainNamespaces.ts @@ -25,6 +25,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { isSubscribed } from "#private/lib/isSubscribed"; import { build } from "@server/build"; import { tierMatrix } from "@server/lib/billing/tierMatrix"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const paramsSchema = z.strictObject({}); @@ -65,6 +66,20 @@ export type ListDomainNamespacesResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListDomainNamespacesResponseDataSchema = z.object({ + domainNamespaces: z.array( + z.object({ + domainNamespaceId: z.string(), + domainId: z.string() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/domains/namepaces", @@ -78,13 +93,9 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema( + ListDomainNamespacesResponseDataSchema + ) } } } diff --git a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts index 28df9b69c..444e187f4 100644 --- a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { eventStreamingDestinations } from "@server/db"; import { logStreamingManager } from "#private/lib/logStreaming"; @@ -42,6 +43,8 @@ const bodySchema = z.strictObject({ export type CreateEventStreamingDestinationResponse = { destinationId: number; }; +const CreateEventStreamingDestinationResponseDataSchema = z.object({destinationId: z.number()}); + registry.registerPath({ method: "put", @@ -63,13 +66,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateEventStreamingDestinationResponseDataSchema) } } } diff --git a/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts b/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts index 2f68b226e..e20f95b8e 100644 --- a/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts +++ b/server/private/routers/eventStreamingDestination/listEventStreamingDestinations.ts @@ -24,6 +24,7 @@ import { OpenAPITags, registry } from "@server/openApi"; import { eq, sql } from "drizzle-orm"; import { decrypt } from "@server/lib/crypto"; import config from "@server/lib/config"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const paramsSchema = z.strictObject({ orgId: z.string().nonempty() @@ -67,6 +68,31 @@ export type ListEventStreamingDestinationsResponse = { }; }; +const ListEventStreamingDestinationsResponseDataSchema = z.object({ + destinations: z.array( + z.object({ + destinationId: z.number(), + orgId: z.string(), + type: z.string(), + config: z.string(), + enabled: z.boolean(), + lastError: z.string().nullable(), + lastErrorAt: z.number().nullable(), + createdAt: z.number(), + updatedAt: z.number(), + sendConnectionLogs: z.boolean(), + sendRequestLogs: z.boolean(), + sendActionLogs: z.boolean(), + sendAccessLogs: z.boolean() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + async function query(orgId: string, limit: number, offset: number) { const res = await db .select() @@ -93,13 +119,9 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema( + ListEventStreamingDestinationsResponseDataSchema + ) } } } diff --git a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts index b1f6c4547..0eae09537 100644 --- a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { eventStreamingDestinations } from "@server/db"; import response from "@server/lib/response"; @@ -45,6 +46,8 @@ const bodySchema = z.strictObject({ export type UpdateEventStreamingDestinationResponse = { destinationId: number; }; +const UpdateEventStreamingDestinationResponseDataSchema = z.object({destinationId: z.number()}); + registry.registerPath({ method: "post", @@ -66,13 +69,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateEventStreamingDestinationResponseDataSchema) } } } diff --git a/server/private/routers/healthChecks/createHealthCheck.ts b/server/private/routers/healthChecks/createHealthCheck.ts index f60eb7bae..86ad8a042 100644 --- a/server/private/routers/healthChecks/createHealthCheck.ts +++ b/server/private/routers/healthChecks/createHealthCheck.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db, targetHealthCheck, newts, sites } from "@server/db"; import { eq } from "drizzle-orm"; import response from "@server/lib/response"; @@ -52,6 +53,8 @@ const bodySchema = z.strictObject({ export type CreateHealthCheckResponse = { targetHealthCheckId: number; }; +const CreateHealthCheckResponseDataSchema = z.object({targetHealthCheckId: z.number()}); + registry.registerPath({ method: "put", @@ -73,13 +76,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateHealthCheckResponseDataSchema) } } } diff --git a/server/private/routers/healthChecks/updateHealthCheck.ts b/server/private/routers/healthChecks/updateHealthCheck.ts index 83dba41cb..cb99b48f5 100644 --- a/server/private/routers/healthChecks/updateHealthCheck.ts +++ b/server/private/routers/healthChecks/updateHealthCheck.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db, targetHealthCheck, newts, sites } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -81,6 +82,8 @@ export type UpdateHealthCheckResponse = { hcHealthyThreshold: number | null; hcUnhealthyThreshold: number | null; }; +const UpdateHealthCheckResponseDataSchema = z.object({targetHealthCheckId: z.number(), name: z.string().nullable(), siteId: z.number().nullable(), hcEnabled: z.boolean(), hcHealth: z.string().nullable(), hcMode: z.string().nullable(), hcHostname: z.string().nullable(), hcPort: z.number().nullable(), hcPath: z.string().nullable(), hcScheme: z.string().nullable(), hcMethod: z.string().nullable(), hcInterval: z.number().nullable(), hcUnhealthyInterval: z.number().nullable(), hcTimeout: z.number().nullable(), hcHeaders: z.string().nullable(), hcFollowRedirects: z.boolean().nullable(), hcStatus: z.number().nullable(), hcTlsServerName: z.string().nullable(), hcHealthyThreshold: z.number().nullable(), hcUnhealthyThreshold: z.number().nullable()}); + registry.registerPath({ method: "post", @@ -102,13 +105,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateHealthCheckResponseDataSchema) } } } diff --git a/server/private/routers/orgIdp/updateOrgOidcIdp.ts b/server/private/routers/orgIdp/updateOrgOidcIdp.ts index 6ffc832a2..bb5d35b7f 100644 --- a/server/private/routers/orgIdp/updateOrgOidcIdp.ts +++ b/server/private/routers/orgIdp/updateOrgOidcIdp.ts @@ -13,6 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db, idpOrg } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -54,6 +55,8 @@ const bodySchema = z.strictObject({ export type UpdateOrgIdpResponse = { idpId: number; }; +const UpdateOrgIdpResponseDataSchema = z.object({idpId: z.number()}); + registry.registerPath({ method: "post", @@ -75,13 +78,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateOrgIdpResponseDataSchema) } } } diff --git a/server/private/routers/ssh/signSshKey.ts b/server/private/routers/ssh/signSshKey.ts index 5dfab9f8c..60065e2a7 100644 --- a/server/private/routers/ssh/signSshKey.ts +++ b/server/private/routers/ssh/signSshKey.ts @@ -92,22 +92,22 @@ export type SignSshKeyResponse = { // } // } // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function signSshKey( diff --git a/server/routers/apiKeys/createOrgApiKey.ts b/server/routers/apiKeys/createOrgApiKey.ts index 8df895d8f..7a2995523 100644 --- a/server/routers/apiKeys/createOrgApiKey.ts +++ b/server/routers/apiKeys/createOrgApiKey.ts @@ -2,6 +2,7 @@ import { NextFunction, Request, Response } from "express"; import { db } from "@server/db"; import HttpCode from "@server/types/HttpCode"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { apiKeyOrg, apiKeys } from "@server/db"; import { fromError } from "zod-validation-error"; import createHttpError from "http-errors"; @@ -32,6 +33,8 @@ export type CreateOrgApiKeyResponse = { lastChars: string; createdAt: string; }; +const CreateOrgApiKeyResponseDataSchema = z.object({apiKeyId: z.string(), name: z.string(), apiKey: z.string(), lastChars: z.string(), createdAt: z.string()}); + registry.registerPath({ method: "put", @@ -53,13 +56,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateOrgApiKeyResponseDataSchema) } } } diff --git a/server/routers/apiKeys/listApiKeyActions.ts b/server/routers/apiKeys/listApiKeyActions.ts index a6d2f01ab..364f3aee2 100644 --- a/server/routers/apiKeys/listApiKeyActions.ts +++ b/server/routers/apiKeys/listApiKeyActions.ts @@ -9,6 +9,7 @@ import { z } from "zod"; import { fromError } from "zod-validation-error"; import { eq } from "drizzle-orm"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const paramsSchema = z.object({ apiKeyId: z.string().nonempty() @@ -44,6 +45,19 @@ export type ListApiKeyActionsResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListApiKeyActionsResponseDataSchema = z.object({ + actions: z.array( + z.object({ + actionId: z.string() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/org/{orgId}/api-key/{apiKeyId}/actions", @@ -58,13 +72,9 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema( + ListApiKeyActionsResponseDataSchema + ) } } } diff --git a/server/routers/apiKeys/listOrgApiKeys.ts b/server/routers/apiKeys/listOrgApiKeys.ts index 41f115f5a..ba87a3033 100644 --- a/server/routers/apiKeys/listOrgApiKeys.ts +++ b/server/routers/apiKeys/listOrgApiKeys.ts @@ -9,6 +9,7 @@ import { z } from "zod"; import { fromError } from "zod-validation-error"; import { eq, and } from "drizzle-orm"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const querySchema = z.object({ limit: z @@ -48,6 +49,23 @@ export type ListOrgApiKeysResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListOrgApiKeysResponseDataSchema = z.object({ + apiKeys: z.array( + z.object({ + apiKeyId: z.string(), + orgId: z.string(), + lastChars: z.string(), + createdAt: z.string(), + name: z.string() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/org/{orgId}/api-keys", @@ -62,13 +80,9 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema( + ListOrgApiKeysResponseDataSchema + ) } } } diff --git a/server/routers/auth/lookupUser.ts b/server/routers/auth/lookupUser.ts index b23e6f8a0..d086cf4e1 100644 --- a/server/routers/auth/lookupUser.ts +++ b/server/routers/auth/lookupUser.ts @@ -51,22 +51,22 @@ export type LookupUserResponse = { // request: { // body: lookupBodySchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function lookupUser( diff --git a/server/routers/client/pickClientDefaults.ts b/server/routers/client/pickClientDefaults.ts index a8093c4bb..ab38a46a9 100644 --- a/server/routers/client/pickClientDefaults.ts +++ b/server/routers/client/pickClientDefaults.ts @@ -6,6 +6,7 @@ import logger from "@server/logger"; import { generateId } from "@server/auth/sessions/app"; import { getNextAvailableClientSubnet } from "@server/lib/ip"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; @@ -14,6 +15,8 @@ export type PickClientDefaultsResponse = { olmSecret: string; subnet: string; }; +const PickClientDefaultsResponseDataSchema = z.object({olmId: z.string(), olmSecret: z.string(), subnet: z.string()}); + const pickClientDefaultsSchema = z.strictObject({ orgId: z.string() @@ -32,13 +35,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(PickClientDefaultsResponseDataSchema) } } } diff --git a/server/routers/domain/listDomains.ts b/server/routers/domain/listDomains.ts index 79a461ff4..07a7c9276 100644 --- a/server/routers/domain/listDomains.ts +++ b/server/routers/domain/listDomains.ts @@ -9,6 +9,7 @@ import { eq, sql } from "drizzle-orm"; import logger from "@server/logger"; import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const listDomainsParamsSchema = z.strictObject({ orgId: z.string() @@ -56,6 +57,28 @@ export type ListDomainsResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListDomainsResponseDataSchema = z.object({ + domains: z.array( + z.object({ + domainId: z.string(), + baseDomain: z.string(), + verified: z.boolean(), + type: z.string().nullable(), + failed: z.boolean(), + tries: z.number(), + configManaged: z.boolean(), + certResolver: z.string().nullable(), + preferWildcardCert: z.boolean().nullable(), + errorMessage: z.string().nullable() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/org/{orgId}/domains", @@ -72,13 +95,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(ListDomainsResponseDataSchema) } } } diff --git a/server/routers/domain/updateDomain.ts b/server/routers/domain/updateDomain.ts index 477f17cbf..a03312916 100644 --- a/server/routers/domain/updateDomain.ts +++ b/server/routers/domain/updateDomain.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db, domains, orgDomains } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -24,6 +25,8 @@ export type UpdateDomainResponse = { certResolver: string | null; preferWildcardCert: boolean | null; }; +const UpdateDomainResponseDataSchema = z.object({domainId: z.string(), certResolver: z.string().nullable(), preferWildcardCert: z.boolean().nullable()}); + registry.registerPath({ method: "patch", @@ -41,13 +44,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateDomainResponseDataSchema) } } } diff --git a/server/routers/idp/createIdpOrgPolicy.ts b/server/routers/idp/createIdpOrgPolicy.ts index 3fcee3ff6..7a69740d1 100644 --- a/server/routers/idp/createIdpOrgPolicy.ts +++ b/server/routers/idp/createIdpOrgPolicy.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -22,6 +23,8 @@ const bodySchema = z.strictObject({ }); export type CreateIdpOrgPolicyResponse = {}; +const CreateIdpOrgPolicyResponseDataSchema = z.object({}); + registry.registerPath({ method: "put", @@ -43,13 +46,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateIdpOrgPolicyResponseDataSchema) } } } diff --git a/server/routers/idp/createOidcIdp.ts b/server/routers/idp/createOidcIdp.ts index b3026b75d..48e4b75b4 100644 --- a/server/routers/idp/createOidcIdp.ts +++ b/server/routers/idp/createOidcIdp.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -33,6 +34,8 @@ export type CreateIdpResponse = { idpId: number; redirectUrl: string; }; +const CreateIdpResponseDataSchema = z.object({idpId: z.number(), redirectUrl: z.string()}); + registry.registerPath({ method: "put", @@ -53,13 +56,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateIdpResponseDataSchema) } } } diff --git a/server/routers/idp/listIdpOrgPolicies.ts b/server/routers/idp/listIdpOrgPolicies.ts index 99240c813..3e183f69a 100644 --- a/server/routers/idp/listIdpOrgPolicies.ts +++ b/server/routers/idp/listIdpOrgPolicies.ts @@ -9,6 +9,7 @@ import { eq, sql } from "drizzle-orm"; import logger from "@server/logger"; import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const paramsSchema = z.object({ idpId: z.coerce.number() @@ -44,6 +45,21 @@ export type ListIdpOrgPoliciesResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListIdpOrgPoliciesResponseDataSchema = z.object({ + policies: z.array( + z.object({ + idpId: z.number(), + orgId: z.string(), + assignDefaultOrgRoleId: z.number().nullable() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/idp/{idpId}/org", @@ -58,13 +74,9 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema( + ListIdpOrgPoliciesResponseDataSchema + ) } } } diff --git a/server/routers/idp/listIdps.ts b/server/routers/idp/listIdps.ts index 3d88294a8..e66c556a2 100644 --- a/server/routers/idp/listIdps.ts +++ b/server/routers/idp/listIdps.ts @@ -9,6 +9,7 @@ import { eq, sql } from "drizzle-orm"; import logger from "@server/logger"; import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const querySchema = z.strictObject({ limit: z @@ -54,6 +55,25 @@ export type ListIdpsResponse = { }; }; +const ListIdpsResponseDataSchema = z.object({ + idps: z.array( + z.object({ + idpId: z.number(), + name: z.string(), + type: z.string(), + variant: z.string().nullable(), + orgCount: z.number(), + autoProvision: z.boolean().nullable(), + tags: z.string().nullable() + }) + ), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + registry.registerPath({ method: "get", path: "/idp", @@ -67,13 +87,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(ListIdpsResponseDataSchema) } } } diff --git a/server/routers/idp/updateIdpOrgPolicy.ts b/server/routers/idp/updateIdpOrgPolicy.ts index b36facac6..73ca68059 100644 --- a/server/routers/idp/updateIdpOrgPolicy.ts +++ b/server/routers/idp/updateIdpOrgPolicy.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -21,6 +22,8 @@ const bodySchema = z.strictObject({ }); export type UpdateIdpOrgPolicyResponse = {}; +const UpdateIdpOrgPolicyResponseDataSchema = z.object({}); + registry.registerPath({ method: "post", @@ -42,13 +45,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateIdpOrgPolicyResponseDataSchema) } } } diff --git a/server/routers/idp/updateOidcIdp.ts b/server/routers/idp/updateOidcIdp.ts index 8630ccf5d..8f54c8e72 100644 --- a/server/routers/idp/updateOidcIdp.ts +++ b/server/routers/idp/updateOidcIdp.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -38,6 +39,8 @@ const bodySchema = z.strictObject({ export type UpdateIdpResponse = { idpId: number; }; +const UpdateIdpResponseDataSchema = z.object({idpId: z.number()}); + registry.registerPath({ method: "post", @@ -59,13 +62,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateIdpResponseDataSchema) } } } diff --git a/server/routers/olm/createUserOlm.ts b/server/routers/olm/createUserOlm.ts index dde21ae15..486546ada 100644 --- a/server/routers/olm/createUserOlm.ts +++ b/server/routers/olm/createUserOlm.ts @@ -43,22 +43,22 @@ export type CreateOlmResponse = { // }, // params: paramsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function createUserOlm( diff --git a/server/routers/olm/deleteUserOlm.ts b/server/routers/olm/deleteUserOlm.ts index 412e85c96..df9328dd3 100644 --- a/server/routers/olm/deleteUserOlm.ts +++ b/server/routers/olm/deleteUserOlm.ts @@ -28,22 +28,22 @@ const paramsSchema = z // request: { // params: paramsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function deleteUserOlm( diff --git a/server/routers/olm/getUserOlm.ts b/server/routers/olm/getUserOlm.ts index cf48bb514..534ae3bb7 100644 --- a/server/routers/olm/getUserOlm.ts +++ b/server/routers/olm/getUserOlm.ts @@ -30,22 +30,22 @@ const querySchema = z.object({ // request: { // params: paramsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function getUserOlm( diff --git a/server/routers/olm/listUserOlms.ts b/server/routers/olm/listUserOlms.ts index b4ba02ef2..d6ac26819 100644 --- a/server/routers/olm/listUserOlms.ts +++ b/server/routers/olm/listUserOlms.ts @@ -41,22 +41,22 @@ const paramsSchema = z // query: querySchema, // params: paramsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export type ListUserOlmsResponse = { diff --git a/server/routers/org/getOrg.ts b/server/routers/org/getOrg.ts index 112f08604..ad5af2379 100644 --- a/server/routers/org/getOrg.ts +++ b/server/routers/org/getOrg.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { Org, orgs } from "@server/db"; import { eq } from "drizzle-orm"; @@ -17,6 +18,8 @@ const getOrgSchema = z.strictObject({ export type GetOrgResponse = { org: Org; }; +const GetOrgResponseDataSchema = z.object({org: z.object({}).passthrough()}); + registry.registerPath({ method: "get", @@ -31,13 +34,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(GetOrgResponseDataSchema) } } } diff --git a/server/routers/org/listOrgs.ts b/server/routers/org/listOrgs.ts index 187e6c983..63b5b62b1 100644 --- a/server/routers/org/listOrgs.ts +++ b/server/routers/org/listOrgs.ts @@ -9,6 +9,7 @@ import { sql, inArray, eq } from "drizzle-orm"; import logger from "@server/logger"; import { fromZodError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; const listOrgsSchema = z.object({ limit: z @@ -38,13 +39,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(ListOrgsResponseDataSchema) } } } @@ -56,6 +51,15 @@ export type ListOrgsResponse = { pagination: { total: number; limit: number; offset: number }; }; +const ListOrgsResponseDataSchema = z.object({ + orgs: z.array(z.object({}).passthrough()), + pagination: z.object({ + total: z.number(), + limit: z.number(), + offset: z.number() + }) +}); + export async function listOrgs( req: Request, res: Response, diff --git a/server/routers/org/listUserOrgs.ts b/server/routers/org/listUserOrgs.ts index 5878ba679..465dd5801 100644 --- a/server/routers/org/listUserOrgs.ts +++ b/server/routers/org/listUserOrgs.ts @@ -37,22 +37,22 @@ const listOrgsSchema = z.object({ // request: { // query: listOrgsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); type ResponseOrg = Org & { diff --git a/server/routers/resource/listUserResourceAliases.ts b/server/routers/resource/listUserResourceAliases.ts index 8f6ef6068..ae71c3708 100644 --- a/server/routers/resource/listUserResourceAliases.ts +++ b/server/routers/resource/listUserResourceAliases.ts @@ -76,22 +76,22 @@ export type ListUserResourceAliasesResponse = PaginatedResponse<{ // }), // query: listUserResourceAliasesQuerySchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function listUserResourceAliases( diff --git a/server/routers/site/pickSiteDefaults.ts b/server/routers/site/pickSiteDefaults.ts index a35f413f0..ec29b9a31 100644 --- a/server/routers/site/pickSiteDefaults.ts +++ b/server/routers/site/pickSiteDefaults.ts @@ -15,6 +15,7 @@ import config from "@server/lib/config"; import { OpenAPITags, registry } from "@server/openApi"; import { fromError } from "zod-validation-error"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { listExitNodes } from "#dynamic/lib/exitNodes"; export type PickSiteDefaultsResponse = { @@ -29,6 +30,8 @@ export type PickSiteDefaultsResponse = { newtSecret: string; clientAddress?: string; }; +const PickSiteDefaultsResponseDataSchema = z.object({exitNodeId: z.number(), address: z.string(), publicKey: z.string(), name: z.string(), listenPort: z.number(), endpoint: z.string(), subnet: z.string(), newtId: z.string(), newtSecret: z.string(), clientAddress: z.string().optional()}); + registry.registerPath({ method: "get", @@ -46,13 +49,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(PickSiteDefaultsResponseDataSchema) } } } diff --git a/server/routers/user/adminUpdateUser2FA.ts b/server/routers/user/adminUpdateUser2FA.ts index da8127adf..8760dec83 100644 --- a/server/routers/user/adminUpdateUser2FA.ts +++ b/server/routers/user/adminUpdateUser2FA.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { users, userOrgs } from "@server/db"; import { eq, and } from "drizzle-orm"; @@ -22,6 +23,8 @@ export type UpdateUser2FAResponse = { userId: string; twoFactorRequested: boolean; }; +const UpdateUser2FAResponseDataSchema = z.object({userId: z.string(), twoFactorRequested: z.boolean()}); + registry.registerPath({ method: "post", @@ -43,13 +46,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(UpdateUser2FAResponseDataSchema) } } } diff --git a/server/routers/user/createOrgUser.ts b/server/routers/user/createOrgUser.ts index e1c19c8dd..f03dd763b 100644 --- a/server/routers/user/createOrgUser.ts +++ b/server/routers/user/createOrgUser.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; import createHttpError from "http-errors"; @@ -53,6 +54,8 @@ const bodySchema = z })); export type CreateOrgUserResponse = {}; +const CreateOrgUserResponseDataSchema = z.object({}); + registry.registerPath({ method: "put", @@ -74,13 +77,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(CreateOrgUserResponseDataSchema) } } } diff --git a/server/routers/user/inviteUser.ts b/server/routers/user/inviteUser.ts index b7fa81a74..d1baff12d 100644 --- a/server/routers/user/inviteUser.ts +++ b/server/routers/user/inviteUser.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; +import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema"; import { db } from "@server/db"; import { orgs, @@ -67,6 +68,8 @@ export type InviteUserResponse = { inviteLink: string; expiresAt: number; }; +const InviteUserResponseDataSchema = z.object({inviteLink: z.string(), expiresAt: z.number()}); + registry.registerPath({ method: "post", @@ -88,13 +91,7 @@ registry.registerPath({ description: "Successful response", content: { "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) + schema: createApiResponseSchema(InviteUserResponseDataSchema) } } } diff --git a/server/routers/ws/checkRoundTripMessage.ts b/server/routers/ws/checkRoundTripMessage.ts index 06d6faf66..121f5affe 100644 --- a/server/routers/ws/checkRoundTripMessage.ts +++ b/server/routers/ws/checkRoundTripMessage.ts @@ -27,22 +27,22 @@ const checkRoundTripMessageParamsSchema = z // request: { // params: checkRoundTripMessageParamsSchema // }, -// responses: { - 200: { - description: "Successful response", - content: { - "application/json": { - schema: z.object({ - data: z.unknown().nullable(), - success: z.boolean(), - error: z.boolean(), - message: z.string(), - status: z.number() - }) - } - } - } - } +// responses: { +// 200: { +// description: "Successful response", +// content: { +// "application/json": { +// schema: z.object({ +// data: z.unknown().nullable(), +// success: z.boolean(), +// error: z.boolean(), +// message: z.string(), +// status: z.number() +// }) +// } +// } +// } +// } // }); export async function checkRoundTripMessage( From f3bee70c23824f2e572a7018b13e740499935825 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 17 May 2026 21:28:39 +0000 Subject: [PATCH 05/11] Reformat generated OpenAPI response schemas for readability Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/7b395a8e-7fae-4f4d-952e-4030fea08262 Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com> --- .../routers/alertRule/updateAlertRule.ts | 4 +++- .../createEventStreamingDestination.ts | 4 +++- .../updateEventStreamingDestination.ts | 4 +++- .../routers/healthChecks/createHealthCheck.ts | 4 +++- .../routers/healthChecks/updateHealthCheck.ts | 23 ++++++++++++++++++- .../routers/orgIdp/updateOrgOidcIdp.ts | 4 +++- server/routers/apiKeys/createOrgApiKey.ts | 8 ++++++- server/routers/client/pickClientDefaults.ts | 6 ++++- server/routers/domain/updateDomain.ts | 6 ++++- server/routers/idp/createOidcIdp.ts | 5 +++- server/routers/idp/updateOidcIdp.ts | 4 +++- server/routers/org/getOrg.ts | 4 +++- server/routers/site/pickSiteDefaults.ts | 13 ++++++++++- server/routers/user/adminUpdateUser2FA.ts | 5 +++- server/routers/user/inviteUser.ts | 5 +++- 15 files changed, 84 insertions(+), 15 deletions(-) diff --git a/server/private/routers/alertRule/updateAlertRule.ts b/server/private/routers/alertRule/updateAlertRule.ts index d4fdaf87b..690a97d29 100644 --- a/server/private/routers/alertRule/updateAlertRule.ts +++ b/server/private/routers/alertRule/updateAlertRule.ts @@ -149,7 +149,9 @@ const bodySchema = z export type UpdateAlertRuleResponse = { alertRuleId: number; }; -const UpdateAlertRuleResponseDataSchema = z.object({alertRuleId: z.number()}); +const UpdateAlertRuleResponseDataSchema = z.object({ + alertRuleId: z.number() +}); registry.registerPath({ diff --git a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts index 444e187f4..5050c55e8 100644 --- a/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/createEventStreamingDestination.ts @@ -43,7 +43,9 @@ const bodySchema = z.strictObject({ export type CreateEventStreamingDestinationResponse = { destinationId: number; }; -const CreateEventStreamingDestinationResponseDataSchema = z.object({destinationId: z.number()}); +const CreateEventStreamingDestinationResponseDataSchema = z.object({ + destinationId: z.number() +}); registry.registerPath({ diff --git a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts index 0eae09537..adbac2cca 100644 --- a/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts +++ b/server/private/routers/eventStreamingDestination/updateEventStreamingDestination.ts @@ -46,7 +46,9 @@ const bodySchema = z.strictObject({ export type UpdateEventStreamingDestinationResponse = { destinationId: number; }; -const UpdateEventStreamingDestinationResponseDataSchema = z.object({destinationId: z.number()}); +const UpdateEventStreamingDestinationResponseDataSchema = z.object({ + destinationId: z.number() +}); registry.registerPath({ diff --git a/server/private/routers/healthChecks/createHealthCheck.ts b/server/private/routers/healthChecks/createHealthCheck.ts index 86ad8a042..aa3706833 100644 --- a/server/private/routers/healthChecks/createHealthCheck.ts +++ b/server/private/routers/healthChecks/createHealthCheck.ts @@ -53,7 +53,9 @@ const bodySchema = z.strictObject({ export type CreateHealthCheckResponse = { targetHealthCheckId: number; }; -const CreateHealthCheckResponseDataSchema = z.object({targetHealthCheckId: z.number()}); +const CreateHealthCheckResponseDataSchema = z.object({ + targetHealthCheckId: z.number() +}); registry.registerPath({ diff --git a/server/private/routers/healthChecks/updateHealthCheck.ts b/server/private/routers/healthChecks/updateHealthCheck.ts index cb99b48f5..f08324f9b 100644 --- a/server/private/routers/healthChecks/updateHealthCheck.ts +++ b/server/private/routers/healthChecks/updateHealthCheck.ts @@ -82,7 +82,28 @@ export type UpdateHealthCheckResponse = { hcHealthyThreshold: number | null; hcUnhealthyThreshold: number | null; }; -const UpdateHealthCheckResponseDataSchema = z.object({targetHealthCheckId: z.number(), name: z.string().nullable(), siteId: z.number().nullable(), hcEnabled: z.boolean(), hcHealth: z.string().nullable(), hcMode: z.string().nullable(), hcHostname: z.string().nullable(), hcPort: z.number().nullable(), hcPath: z.string().nullable(), hcScheme: z.string().nullable(), hcMethod: z.string().nullable(), hcInterval: z.number().nullable(), hcUnhealthyInterval: z.number().nullable(), hcTimeout: z.number().nullable(), hcHeaders: z.string().nullable(), hcFollowRedirects: z.boolean().nullable(), hcStatus: z.number().nullable(), hcTlsServerName: z.string().nullable(), hcHealthyThreshold: z.number().nullable(), hcUnhealthyThreshold: z.number().nullable()}); +const UpdateHealthCheckResponseDataSchema = z.object({ + targetHealthCheckId: z.number(), + name: z.string().nullable(), + siteId: z.number().nullable(), + hcEnabled: z.boolean(), + hcHealth: z.string().nullable(), + hcMode: z.string().nullable(), + hcHostname: z.string().nullable(), + hcPort: z.number().nullable(), + hcPath: z.string().nullable(), + hcScheme: z.string().nullable(), + hcMethod: z.string().nullable(), + hcInterval: z.number().nullable(), + hcUnhealthyInterval: z.number().nullable(), + hcTimeout: z.number().nullable(), + hcHeaders: z.string().nullable(), + hcFollowRedirects: z.boolean().nullable(), + hcStatus: z.number().nullable(), + hcTlsServerName: z.string().nullable(), + hcHealthyThreshold: z.number().nullable(), + hcUnhealthyThreshold: z.number().nullable() +}); registry.registerPath({ diff --git a/server/private/routers/orgIdp/updateOrgOidcIdp.ts b/server/private/routers/orgIdp/updateOrgOidcIdp.ts index bb5d35b7f..9d4698e3c 100644 --- a/server/private/routers/orgIdp/updateOrgOidcIdp.ts +++ b/server/private/routers/orgIdp/updateOrgOidcIdp.ts @@ -55,7 +55,9 @@ const bodySchema = z.strictObject({ export type UpdateOrgIdpResponse = { idpId: number; }; -const UpdateOrgIdpResponseDataSchema = z.object({idpId: z.number()}); +const UpdateOrgIdpResponseDataSchema = z.object({ + idpId: z.number() +}); registry.registerPath({ diff --git a/server/routers/apiKeys/createOrgApiKey.ts b/server/routers/apiKeys/createOrgApiKey.ts index 7a2995523..de3fb32b7 100644 --- a/server/routers/apiKeys/createOrgApiKey.ts +++ b/server/routers/apiKeys/createOrgApiKey.ts @@ -33,7 +33,13 @@ export type CreateOrgApiKeyResponse = { lastChars: string; createdAt: string; }; -const CreateOrgApiKeyResponseDataSchema = z.object({apiKeyId: z.string(), name: z.string(), apiKey: z.string(), lastChars: z.string(), createdAt: z.string()}); +const CreateOrgApiKeyResponseDataSchema = z.object({ + apiKeyId: z.string(), + name: z.string(), + apiKey: z.string(), + lastChars: z.string(), + createdAt: z.string() +}); registry.registerPath({ diff --git a/server/routers/client/pickClientDefaults.ts b/server/routers/client/pickClientDefaults.ts index ab38a46a9..2ed7ddbce 100644 --- a/server/routers/client/pickClientDefaults.ts +++ b/server/routers/client/pickClientDefaults.ts @@ -15,7 +15,11 @@ export type PickClientDefaultsResponse = { olmSecret: string; subnet: string; }; -const PickClientDefaultsResponseDataSchema = z.object({olmId: z.string(), olmSecret: z.string(), subnet: z.string()}); +const PickClientDefaultsResponseDataSchema = z.object({ + olmId: z.string(), + olmSecret: z.string(), + subnet: z.string() +}); const pickClientDefaultsSchema = z.strictObject({ diff --git a/server/routers/domain/updateDomain.ts b/server/routers/domain/updateDomain.ts index a03312916..61b99f542 100644 --- a/server/routers/domain/updateDomain.ts +++ b/server/routers/domain/updateDomain.ts @@ -25,7 +25,11 @@ export type UpdateDomainResponse = { certResolver: string | null; preferWildcardCert: boolean | null; }; -const UpdateDomainResponseDataSchema = z.object({domainId: z.string(), certResolver: z.string().nullable(), preferWildcardCert: z.boolean().nullable()}); +const UpdateDomainResponseDataSchema = z.object({ + domainId: z.string(), + certResolver: z.string().nullable(), + preferWildcardCert: z.boolean().nullable() +}); registry.registerPath({ diff --git a/server/routers/idp/createOidcIdp.ts b/server/routers/idp/createOidcIdp.ts index 48e4b75b4..813ab0ea5 100644 --- a/server/routers/idp/createOidcIdp.ts +++ b/server/routers/idp/createOidcIdp.ts @@ -34,7 +34,10 @@ export type CreateIdpResponse = { idpId: number; redirectUrl: string; }; -const CreateIdpResponseDataSchema = z.object({idpId: z.number(), redirectUrl: z.string()}); +const CreateIdpResponseDataSchema = z.object({ + idpId: z.number(), + redirectUrl: z.string() +}); registry.registerPath({ diff --git a/server/routers/idp/updateOidcIdp.ts b/server/routers/idp/updateOidcIdp.ts index 8f54c8e72..69b77770f 100644 --- a/server/routers/idp/updateOidcIdp.ts +++ b/server/routers/idp/updateOidcIdp.ts @@ -39,7 +39,9 @@ const bodySchema = z.strictObject({ export type UpdateIdpResponse = { idpId: number; }; -const UpdateIdpResponseDataSchema = z.object({idpId: z.number()}); +const UpdateIdpResponseDataSchema = z.object({ + idpId: z.number() +}); registry.registerPath({ diff --git a/server/routers/org/getOrg.ts b/server/routers/org/getOrg.ts index ad5af2379..642efb5b9 100644 --- a/server/routers/org/getOrg.ts +++ b/server/routers/org/getOrg.ts @@ -18,7 +18,9 @@ const getOrgSchema = z.strictObject({ export type GetOrgResponse = { org: Org; }; -const GetOrgResponseDataSchema = z.object({org: z.object({}).passthrough()}); +const GetOrgResponseDataSchema = z.object({ + org: z.object({}).passthrough() +}); registry.registerPath({ diff --git a/server/routers/site/pickSiteDefaults.ts b/server/routers/site/pickSiteDefaults.ts index ec29b9a31..39d1e459d 100644 --- a/server/routers/site/pickSiteDefaults.ts +++ b/server/routers/site/pickSiteDefaults.ts @@ -30,7 +30,18 @@ export type PickSiteDefaultsResponse = { newtSecret: string; clientAddress?: string; }; -const PickSiteDefaultsResponseDataSchema = z.object({exitNodeId: z.number(), address: z.string(), publicKey: z.string(), name: z.string(), listenPort: z.number(), endpoint: z.string(), subnet: z.string(), newtId: z.string(), newtSecret: z.string(), clientAddress: z.string().optional()}); +const PickSiteDefaultsResponseDataSchema = z.object({ + exitNodeId: z.number(), + address: z.string(), + publicKey: z.string(), + name: z.string(), + listenPort: z.number(), + endpoint: z.string(), + subnet: z.string(), + newtId: z.string(), + newtSecret: z.string(), + clientAddress: z.string().optional() +}); registry.registerPath({ diff --git a/server/routers/user/adminUpdateUser2FA.ts b/server/routers/user/adminUpdateUser2FA.ts index 8760dec83..effc17aa2 100644 --- a/server/routers/user/adminUpdateUser2FA.ts +++ b/server/routers/user/adminUpdateUser2FA.ts @@ -23,7 +23,10 @@ export type UpdateUser2FAResponse = { userId: string; twoFactorRequested: boolean; }; -const UpdateUser2FAResponseDataSchema = z.object({userId: z.string(), twoFactorRequested: z.boolean()}); +const UpdateUser2FAResponseDataSchema = z.object({ + userId: z.string(), + twoFactorRequested: z.boolean() +}); registry.registerPath({ diff --git a/server/routers/user/inviteUser.ts b/server/routers/user/inviteUser.ts index d1baff12d..c4feb820f 100644 --- a/server/routers/user/inviteUser.ts +++ b/server/routers/user/inviteUser.ts @@ -68,7 +68,10 @@ export type InviteUserResponse = { inviteLink: string; expiresAt: number; }; -const InviteUserResponseDataSchema = z.object({inviteLink: z.string(), expiresAt: z.number()}); +const InviteUserResponseDataSchema = z.object({ + inviteLink: z.string(), + expiresAt: z.number() +}); registry.registerPath({ From 81ed391efb87ac3084d0953ee6687dbc05e0b9fb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 17 May 2026 21:30:23 +0000 Subject: [PATCH 06/11] Remove obsolete stoi import from blueprint OpenAPI route Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/7b395a8e-7fae-4f4d-952e-4030fea08262 Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com> --- server/routers/blueprints/getBlueprint.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/routers/blueprints/getBlueprint.ts b/server/routers/blueprints/getBlueprint.ts index 85d19bb15..4bad8ee3f 100644 --- a/server/routers/blueprints/getBlueprint.ts +++ b/server/routers/blueprints/getBlueprint.ts @@ -7,7 +7,6 @@ import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; import createHttpError from "http-errors"; import logger from "@server/logger"; -import stoi from "@server/lib/stoi"; import { fromError } from "zod-validation-error"; import { OpenAPITags, registry } from "@server/openApi"; import { BlueprintData } from "./types"; From 18ac542e300d6e3d696bd1967b7f04376e692097 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 01:36:20 +0000 Subject: [PATCH 07/11] Bump the dev-patch-updates group with 4 updates Bumps the dev-patch-updates group with 4 updates: [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools), [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react), [postcss](https://github.com/postcss/postcss) and [tsx](https://github.com/privatenumber/tsx). Updates `@tanstack/react-query-devtools` from 5.100.10 to 5.100.14 - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query-devtools/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query-devtools@5.100.14/packages/react-query-devtools) Updates `@types/react` from 19.2.14 to 19.2.15 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `postcss` from 8.5.14 to 8.5.15 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.5.14...8.5.15) Updates `tsx` from 4.22.0 to 4.22.3 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](https://github.com/privatenumber/tsx/compare/v4.22.0...v4.22.3) --- updated-dependencies: - dependency-name: "@tanstack/react-query-devtools" dependency-version: 5.100.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@types/react" dependency-version: 19.2.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: postcss dependency-version: 8.5.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: tsx dependency-version: 4.22.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates ... Signed-off-by: dependabot[bot] --- package-lock.json | 44 ++++++++++++++++++++++---------------------- package.json | 10 +++++----- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index b12c9d468..4ff0a4b15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "@esbuild-plugins/tsconfig-paths": "0.1.2", "@react-email/ui": "^6.5.0", "@tailwindcss/postcss": "4.3.0", - "@tanstack/react-query-devtools": "5.100.10", + "@tanstack/react-query-devtools": "5.100.14", "@types/better-sqlite3": "7.6.13", "@types/cookie-parser": "1.4.10", "@types/cors": "2.8.19", @@ -127,7 +127,7 @@ "@types/nodemailer": "8.0.0", "@types/nprogress": "0.2.3", "@types/pg": "8.20.0", - "@types/react": "19.2.14", + "@types/react": "19.2.15", "@types/react-dom": "19.2.3", "@types/semver": "7.7.1", "@types/sshpk": "1.17.4", @@ -141,12 +141,12 @@ "esbuild-node-externals": "1.22.0", "eslint": "10.4.0", "eslint-config-next": "16.2.6", - "postcss": "8.5.14", + "postcss": "8.5.15", "prettier": "3.8.3", "react-email": "6.5.0", "tailwindcss": "4.3.0", "tsc-alias": "1.8.17", - "tsx": "4.22.0", + "tsx": "4.22.3", "typescript": "6.0.3", "typescript-eslint": "8.60.0" } @@ -7477,9 +7477,9 @@ } }, "node_modules/@tanstack/query-devtools": { - "version": "5.100.10", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.100.10.tgz", - "integrity": "sha512-3DmJf25hDPus5IpVvp6ujXv6bKV2zPzI9vpbAmpJigsL/H6DPvPjmf7/Q9yVKEke//8fgeQ45abjgnLuyYxAiw==", + "version": "5.100.14", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.100.14.tgz", + "integrity": "sha512-g96SmSSQecYTYcyuAMRXr895GplJv01UGt7qttQWPOUyZ5EGz5tbRc589bMc2m5BsPFD6O0PCEAHdbDYNP6UBw==", "dev": true, "license": "MIT", "funding": { @@ -7504,20 +7504,20 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.100.10", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.100.10.tgz", - "integrity": "sha512-zes0+o9ef5rAZXJ9f/SeaLs2nufJaeVkZkl/Or9NGrWVF41kL9Od9ED9nCwtQlgiF2VGtrzhEw5AU/igAO+aAg==", + "version": "5.100.14", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.100.14.tgz", + "integrity": "sha512-JkP5VDgKOw3t/QSA1OABRHEqx8BuNs5MfvZRooNqdvN57SzTuGq3fKR1a2IH5rqa5HDLUm+FOXUEnB9ueHiLzg==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/query-devtools": "5.100.10" + "@tanstack/query-devtools": "5.100.14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.100.10", + "@tanstack/react-query": "^5.100.14", "react": "^18 || ^19" } }, @@ -8097,9 +8097,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", - "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", + "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", "devOptional": true, "license": "MIT", "dependencies": { @@ -15533,9 +15533,9 @@ } }, "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "funding": [ { "type": "opencollective", @@ -15552,7 +15552,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -17737,9 +17737,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.0.tgz", - "integrity": "sha512-8ccZMPD69s1AbKXx0C5ddTNZfNjwV04iIKgjZmKfKxMynEtSYcK0Lh7iQFh53fI5Yu4pb9usgAiqyPmEONaALg==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", + "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e7c99dfc1..2633f8ca0 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "@esbuild-plugins/tsconfig-paths": "0.1.2", "@react-email/ui": "^6.5.0", "@tailwindcss/postcss": "4.3.0", - "@tanstack/react-query-devtools": "5.100.10", + "@tanstack/react-query-devtools": "5.100.14", "@types/better-sqlite3": "7.6.13", "@types/cookie-parser": "1.4.10", "@types/cors": "2.8.19", @@ -150,7 +150,7 @@ "@types/nodemailer": "8.0.0", "@types/nprogress": "0.2.3", "@types/pg": "8.20.0", - "@types/react": "19.2.14", + "@types/react": "19.2.15", "@types/react-dom": "19.2.3", "@types/semver": "7.7.1", "@types/sshpk": "1.17.4", @@ -164,18 +164,18 @@ "esbuild-node-externals": "1.22.0", "eslint": "10.4.0", "eslint-config-next": "16.2.6", - "postcss": "8.5.14", + "postcss": "8.5.15", "prettier": "3.8.3", "react-email": "6.5.0", "tailwindcss": "4.3.0", "tsc-alias": "1.8.17", - "tsx": "4.22.0", + "tsx": "4.22.3", "typescript": "6.0.3", "typescript-eslint": "8.60.0" }, "overrides": { "esbuild": "0.28.0", "dompurify": "3.4.0", - "postcss": "8.5.14" + "postcss": "8.5.15" } } From 9a92be532a08f59ac7854e618a6e503f8c143c67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 01:43:25 +0000 Subject: [PATCH 08/11] Bump the prod-minor-updates group with 9 updates Bumps the prod-minor-updates group with 9 updates: | Package | From | To | | --- | --- | --- | | [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.1047.0` | `3.1056.0` | | [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `5.2.2` | `5.4.0` | | [helmet](https://github.com/helmetjs/helmet) | `8.1.0` | `8.2.0` | | [ioredis](https://github.com/luin/ioredis) | `5.10.1` | `5.11.0` | | [next-intl](https://github.com/amannn/next-intl) | `4.12.0` | `4.13.0` | | [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) | `8.20.0` | `8.21.0` | | [posthog-node](https://github.com/PostHog/posthog-js/tree/HEAD/packages/node) | `5.34.1` | `5.35.6` | | [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.75.0` | `7.76.1` | | [ws](https://github.com/websockets/ws) | `8.20.1` | `8.21.0` | Updates `@aws-sdk/client-s3` from 3.1047.0 to 3.1056.0 - [Release notes](https://github.com/aws/aws-sdk-js-v3/releases) - [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1056.0/clients/client-s3) Updates `@hookform/resolvers` from 5.2.2 to 5.4.0 - [Release notes](https://github.com/react-hook-form/resolvers/releases) - [Commits](https://github.com/react-hook-form/resolvers/compare/v5.2.2...v5.4.0) Updates `helmet` from 8.1.0 to 8.2.0 - [Changelog](https://github.com/helmetjs/helmet/blob/main/CHANGELOG.md) - [Commits](https://github.com/helmetjs/helmet/compare/v8.1.0...v8.2.0) Updates `ioredis` from 5.10.1 to 5.11.0 - [Release notes](https://github.com/luin/ioredis/releases) - [Changelog](https://github.com/redis/ioredis/blob/main/CHANGELOG.md) - [Commits](https://github.com/luin/ioredis/compare/v5.10.1...v5.11.0) Updates `next-intl` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/amannn/next-intl/releases) - [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md) - [Commits](https://github.com/amannn/next-intl/compare/v4.12.0...v4.13.0) Updates `pg` from 8.20.0 to 8.21.0 - [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md) - [Commits](https://github.com/brianc/node-postgres/commits/pg@8.21.0/packages/pg) Updates `posthog-node` from 5.34.1 to 5.35.6 - [Release notes](https://github.com/PostHog/posthog-js/releases) - [Changelog](https://github.com/PostHog/posthog-js/blob/main/packages/node/CHANGELOG.md) - [Commits](https://github.com/PostHog/posthog-js/commits/posthog-node@5.35.6/packages/node) Updates `react-hook-form` from 7.75.0 to 7.76.1 - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.75.0...v7.76.1) Updates `ws` from 8.20.1 to 8.21.0 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.20.1...8.21.0) --- updated-dependencies: - dependency-name: "@aws-sdk/client-s3" dependency-version: 3.1056.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: "@hookform/resolvers" dependency-version: 5.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: helmet dependency-version: 8.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: ioredis dependency-version: 5.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: next-intl dependency-version: 4.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: pg dependency-version: 8.21.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: posthog-node dependency-version: 5.35.6 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: react-hook-form dependency-version: 7.76.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates - dependency-name: ws dependency-version: 8.21.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates ... Signed-off-by: dependabot[bot] --- package-lock.json | 742 ++++++++++++++++++---------------------------- package.json | 18 +- 2 files changed, 302 insertions(+), 458 deletions(-) diff --git a/package-lock.json b/package-lock.json index b12c9d468..f9cfd557c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,10 @@ "license": "SEE LICENSE IN LICENSE AND README.md", "dependencies": { "@asteasolutions/zod-to-openapi": "8.5.0", - "@aws-sdk/client-s3": "3.1047.0", + "@aws-sdk/client-s3": "3.1056.0", "@faker-js/faker": "10.4.0", "@headlessui/react": "2.2.10", - "@hookform/resolvers": "5.2.2", + "@hookform/resolvers": "5.4.0", "@monaco-editor/react": "4.7.0", "@node-rs/argon2": "2.0.2", "@oslojs/crypto": "1.0.1", @@ -60,10 +60,10 @@ "express": "5.2.1", "express-rate-limit": "8.5.2", "glob": "13.0.6", - "helmet": "8.1.0", + "helmet": "8.2.0", "http-errors": "2.0.1", "input-otp": "1.4.2", - "ioredis": "5.10.1", + "ioredis": "5.11.0", "jmespath": "0.16.0", "js-yaml": "4.1.1", "jsonwebtoken": "9.0.3", @@ -71,20 +71,20 @@ "maxmind": "5.0.6", "moment": "2.30.1", "next": "16.2.6", - "next-intl": "4.12.0", + "next-intl": "4.13.0", "next-themes": "0.4.6", "nextjs-toploader": "3.9.17", "node-cache": "5.1.2", "nodemailer": "8.0.9", "oslo": "1.2.1", - "pg": "8.20.0", - "posthog-node": "5.34.1", + "pg": "8.21.0", + "posthog-node": "5.35.6", "qrcode.react": "4.2.0", "react": "19.2.6", "react-day-picker": "9.14.0", "react-dom": "19.2.6", "react-easy-sort": "1.8.0", - "react-hook-form": "7.75.0", + "react-hook-form": "7.76.1", "react-icons": "5.6.0", "recharts": "3.8.1", "reodotdev": "1.1.0", @@ -101,7 +101,7 @@ "visionscarto-world-atlas": "1.0.0", "winston": "3.19.0", "winston-daily-rotate-file": "5.0.0", - "ws": "8.20.1", + "ws": "8.21.0", "yaml": "2.9.0", "yargs": "18.0.0", "zod": "4.4.3", @@ -265,36 +265,28 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1047.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1047.0.tgz", - "integrity": "sha512-gk8g31eqvgf7eLCpkVjWs9KL7gYgkomt3FT2o9tbIe6goYrBheN2lHxhCsTn1zFYbt7EwrZXTGkQPIQNIN0c5w==", + "version": "3.1056.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1056.0.tgz", + "integrity": "sha512-WfMZEM2eC96anIT0RzR/QmhaefWKsNjOHNv09ORBkcA++ULBnm1fRau+KKGEIbr5nDnf9BTG7E7U3oOVklQS8g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/credential-provider-node": "^3.972.41", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.12", - "@aws-sdk/middleware-expect-continue": "^3.972.11", - "@aws-sdk/middleware-flexible-checksums": "^3.974.18", - "@aws-sdk/middleware-host-header": "^3.972.11", - "@aws-sdk/middleware-location-constraint": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.12", - "@aws-sdk/middleware-sdk-s3": "^3.972.39", - "@aws-sdk/middleware-ssec": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.40", - "@aws-sdk/region-config-resolver": "^3.972.14", - "@aws-sdk/signature-v4-multi-region": "^3.996.26", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.9", - "@aws-sdk/util-user-agent-browser": "^3.972.11", - "@aws-sdk/util-user-agent-node": "^3.973.26", - "@smithy/core": "^3.24.1", - "@smithy/fetch-http-handler": "^5.4.1", - "@smithy/node-http-handler": "^4.7.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/credential-provider-node": "^3.972.46", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.17", + "@aws-sdk/middleware-expect-continue": "^3.972.14", + "@aws-sdk/middleware-flexible-checksums": "^3.974.23", + "@aws-sdk/middleware-location-constraint": "^3.972.11", + "@aws-sdk/middleware-sdk-s3": "^3.972.44", + "@aws-sdk/middleware-ssec": "^3.972.11", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -302,16 +294,18 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.10.tgz", - "integrity": "sha512-ZGFFlYynBR78Y/F8b/7y4i4sgW/iGwJSjoM7AZo5Et6vyr4/L0bunN+uzKMsvecCZyqcPp4RRK7Rs17l0kMujg==", + "version": "3.974.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.15.tgz", + "integrity": "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.24", - "@smithy/core": "^3.24.1", - "@smithy/signature-v4": "^5.4.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@aws-sdk/xml-builder": "^3.972.26", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.24.5", + "@smithy/signature-v4": "^5.4.5", + "@smithy/types": "^4.14.2", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { @@ -319,12 +313,12 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.8.tgz", - "integrity": "sha512-fVfUCL/Xh2zINYMPZvj+iBn6XWouQf0DAnjaWCI9MkmqXzL2Iy5FoQB8O7syFe6gN6AH1ecDDU58T51Ou0kFkA==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.9.tgz", + "integrity": "sha512-P+QGozmXn2mZZI7sDgk+aUm+RTI61MPSFB+Ir2vjEjEbEsE4e7hYtzrDvAUxZy9ko81h53e11+F/GYlvwDkaOQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -332,15 +326,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.36.tgz", - "integrity": "sha512-gE+CGuPZD1eqUWGSrM8CXDjlwuPujIuwI+IlorD1wE2RcANKKT4jscB9GY1nTJbjmXzD18sycsYbgCG5m3n4/g==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.41.tgz", + "integrity": "sha512-n1EbJ98yvPWWdHZZv8bRBMqqDQJrtgtxyJ4xLy2Uqrh25BCOZQ7nnS1CsFXvuH8r0b0KVHDZEGEH5FxmEMP8jg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -348,17 +342,17 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.38.tgz", - "integrity": "sha512-cHZo3bV6zN9joDQ2AYVctfzHTKStxWKwnGu0z7GwCUC+DAtB3qL/+26l+a63RbmFbVvb1JK+0vJKodN3hRMwyw==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.43.tgz", + "integrity": "sha512-TT76RN1NkI9WoyZqCNxOw6/WBMF7pYOTJcXbMokNFU+euSG40Kaf/t/FhDACVZWP+43wEM6ZynIPIkzS1wR1iA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/fetch-http-handler": "^5.4.1", - "@smithy/node-http-handler": "^4.7.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -366,23 +360,23 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.40.tgz", - "integrity": "sha512-0NFGS9I3PD2yMveQqqpwpRdyZVStzgk0Yr2rZHh80kV/QNqQCK5lSrksvU3nBcRNSUF5Uk8rL3Xk0EVR+UVAnA==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.45.tgz", + "integrity": "sha512-sJe5ZWibO4s7RWjFQ8Zol76KxoJcIYyEZH1/wxQSBMSIAAxzaJ8cS/ITAaIHWUQvDKQdt18+cJAHKWB7n1Jmrg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/credential-provider-env": "^3.972.36", - "@aws-sdk/credential-provider-http": "^3.972.38", - "@aws-sdk/credential-provider-login": "^3.972.40", - "@aws-sdk/credential-provider-process": "^3.972.36", - "@aws-sdk/credential-provider-sso": "^3.972.40", - "@aws-sdk/credential-provider-web-identity": "^3.972.40", - "@aws-sdk/nested-clients": "^3.997.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/credential-provider-imds": "^4.3.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/credential-provider-env": "^3.972.41", + "@aws-sdk/credential-provider-http": "^3.972.43", + "@aws-sdk/credential-provider-login": "^3.972.45", + "@aws-sdk/credential-provider-process": "^3.972.41", + "@aws-sdk/credential-provider-sso": "^3.972.45", + "@aws-sdk/credential-provider-web-identity": "^3.972.45", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/credential-provider-imds": "^4.3.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -390,16 +384,16 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.40.tgz", - "integrity": "sha512-IEIl+UQnrEjZP53TSl91e8LBephi4i1Mt9WZrMgN8pOg6xPOLZdkN1GhsEzjkMD1TQy4Fp2dwWA/9ToTQFOlLA==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.45.tgz", + "integrity": "sha512-MZQv4SNjByk1iOKmrqmzcUF/uCB05wjvEHyXKxmGQTUANTIVayX6HPUF0bzkWLvtnkH7sAn9kUCfkXbSpj9sDA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/nested-clients": "^3.997.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -407,21 +401,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.41", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.41.tgz", - "integrity": "sha512-h6BlclpsPGkx7Pv7ukr8oKVqN3jvxnH5n9ZIUQa8focr1ZkKd2MYiPJ2Nv9GI97dohJVJBfZAsTp/qoZL5R1pw==", + "version": "3.972.46", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.46.tgz", + "integrity": "sha512-cS4w0jzDRb1jOlkiJS3y80OxddHzkky/MN9k3NYs5jganNKVLjF0lpvjlwS118oGMr3cdAfOlVdo8gLurTSE7w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.36", - "@aws-sdk/credential-provider-http": "^3.972.38", - "@aws-sdk/credential-provider-ini": "^3.972.40", - "@aws-sdk/credential-provider-process": "^3.972.36", - "@aws-sdk/credential-provider-sso": "^3.972.40", - "@aws-sdk/credential-provider-web-identity": "^3.972.40", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/credential-provider-imds": "^4.3.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/credential-provider-env": "^3.972.41", + "@aws-sdk/credential-provider-http": "^3.972.43", + "@aws-sdk/credential-provider-ini": "^3.972.45", + "@aws-sdk/credential-provider-process": "^3.972.41", + "@aws-sdk/credential-provider-sso": "^3.972.45", + "@aws-sdk/credential-provider-web-identity": "^3.972.45", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/credential-provider-imds": "^4.3.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -429,15 +423,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.36.tgz", - "integrity": "sha512-eDQ6X7clTAOxXegOx4rGT1hyfusGEYdJGCGo0Ym2+CKeMQBjk+SJSxSVev11NJew5xJHJ/c3hryl2awKaxuSEA==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.41.tgz", + "integrity": "sha512-7I/n1zkysouLOWvkEhjNEP4vMnD2v4kzzr3/3QBdrripEpn7ap1/I5DF3Hou1SUqkKWo1f3oPGMyFAA1FAMvsQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -445,17 +439,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.40.tgz", - "integrity": "sha512-jaABbsoOkGlKg5kaHetYmUV6mWM57H89ia0Yksom1XxC847mfjmEVb4p7VijS1sjPbXjUii4cftJuwsl4MXkRg==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.45.tgz", + "integrity": "sha512-oHgbz/eFD8IKiksqDsz9ZMU4A59BpQq4QwJedBnGD80ZqYcHPPHZBwjBnxLVkB7iRVVHWpDclR8yWdD2PkQIUA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/nested-clients": "^3.997.8", - "@aws-sdk/token-providers": "3.1047.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/token-providers": "3.1056.0", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -463,16 +457,16 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.40.tgz", - "integrity": "sha512-bfIrM8IIzbRtXRQWx/vNEUBLTImLZyX5uKk8uSdeSAZ4Mj3Yi4UnRJLK4FkQLWErbM3McpVLQ1DaM6XO66Ed5g==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.45.tgz", + "integrity": "sha512-CDhzKdb2onv5bpnjn/acgdNmJOQthPDLsPizU7rZflsEcgMMp8Mlri+U5hdxf8ldvZJpvM3vLU6D56vfJm5AMQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/nested-clients": "^3.997.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -480,15 +474,15 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.12", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.12.tgz", - "integrity": "sha512-MAG0Adg7FFEwuoeLbb5SBnXDW7S2EpNTwHnQ4h3pJqSKVQOhOmugyA1MfMh6AD4SAfx0lko4htZdwkNoLqFj5A==", + "version": "3.972.17", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.17.tgz", + "integrity": "sha512-lbDmWuHenc+kiwCNrxz4MyN6nkxCWyTXPIWuspJN0ibziu+8CXci7vI1bK9MAkwy8cwJOEXNu0gBM5S0uTGRIg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -496,14 +490,14 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.11.tgz", - "integrity": "sha512-xpobcctR1AHSrvkiArgTyLffn78Lt9unPMpa/yic9RKn+bOf/5M55UIM6RaPL5xKzI06/GSsTDywTWvzEAbyyw==", + "version": "3.972.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.14.tgz", + "integrity": "sha512-3TNFEVGO4sWZj9TEXOCZLzGEctXHnaO4fk2EQ8KVaboTbwHmEPEQrm17Xb9koImUIXEw0sgi2xtHjg7LuTS3rA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -511,34 +505,19 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.18", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.18.tgz", - "integrity": "sha512-2noO+4ARfC+8vOIyvJvQE6bioVaTRkUcPvUoM/jgwXcweZnZovSZ6OCs/cs+NU2p7yvuwuJT/7LkTzBSj5pU4A==", + "version": "3.974.23", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.23.tgz", + "integrity": "sha512-4nPKARo2lfKvQGUt2fPA5NlS/mEohckdxpuC9ecbjVfj7B7NFFYHeTg+Bf5BEQwdn3yRfUIzFiEkPp8Yuaw3wA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/crc64-nvme": "^3.972.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.11.tgz", - "integrity": "sha512-CBC6+tVYaOJo7QXgN1zJ4Ba2f3/Cpy4eRViYFimXW/O5Mn8hBmgXXzHu4vy4ubT80YWnp8aCFygr7dTOa14yQg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/crc64-nvme": "^3.972.9", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -546,43 +525,13 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", - "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.11.tgz", + "integrity": "sha512-hkfspNUP4criAH6ton6BGKgnm5dZx+7bUOy1YqlTfejDeUPAM23D81q/IX+hdlS3KUsfwGz5ADTqZWKBEUpf4A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.12", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.12.tgz", - "integrity": "sha512-5eltYxKB4MfdQv7/VhWxRbAVQKow5dz9votRFigTYrWJHMQXwLMltlbk7KFWSZh5NDBySfmjT7Jv/DWfYCmDng==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -590,17 +539,16 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.39.tgz", - "integrity": "sha512-cimoQxecHHNad+lv2g7QJ24Cxqh1P0EULJSxyX4YD95BUIGeGRPumbdEXpHPxNkJRU99DVmh7u16Y+uhFu31Yw==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.44.tgz", + "integrity": "sha512-8HQsRg1NpX8vR4vNl1E8pyLnqZroq9VSL2vZQVSgBqp6wv6365LzYD08/c9FFh/9FTg7YRc7aTtEmXF0ir/pqg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/signature-v4-multi-region": "^3.996.26", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/signature-v4": "^5.4.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -608,30 +556,13 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", - "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.11.tgz", + "integrity": "sha512-7PQvGNhtveKlvVqNahqWx5yrwxP7ecwAoB1dYBf8eKwfo2tzzCbNnW+q2nO3N066ktQaB4iBQbDRWtizm+amoQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.40.tgz", - "integrity": "sha512-QLpD+HNQtL1Mc49/GRa6RmZvi/TEYBWPevC9F3L+j96IoG3xOSRctdQfbkX0lETb3TX9QQXU1oGYDmAB+YJprA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.9", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -639,43 +570,20 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.8.tgz", - "integrity": "sha512-/Vw2M27w+0APfMDzDpvv8auA4WiJ4D22+lC61pMS2M8Wk+4IydeRqh5utbrh+A5gQRxgUYd/xz3tdv8nQlmiHg==", + "version": "3.997.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.13.tgz", + "integrity": "sha512-2pA6eyb5nSo/ZD2cayhOTEMoGQYgspq0RI05GDLkzQ3ajZ6isS6waV6E92Am/hz4LIlLUTrbwPLurJ/fuiHvkg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/middleware-host-header": "^3.972.11", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.12", - "@aws-sdk/middleware-user-agent": "^3.972.40", - "@aws-sdk/region-config-resolver": "^3.972.14", - "@aws-sdk/signature-v4-multi-region": "^3.996.26", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.9", - "@aws-sdk/util-user-agent-browser": "^3.972.11", - "@aws-sdk/util-user-agent-node": "^3.973.26", - "@smithy/core": "^3.24.1", - "@smithy/fetch-http-handler": "^5.4.1", - "@smithy/node-http-handler": "^4.7.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.14.tgz", - "integrity": "sha512-VuLXVmm7+lKVxqFcOItPkXhjbJ02iUfxkxheRu41SfWf6/xrZup2A2SwHZos/LeQGu3SBHeqTQht80Uo3ienPA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -683,15 +591,14 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.26.tgz", - "integrity": "sha512-2N62veqdMZBCwQUHsbhtnaovOFjOa5Dn3dAD1nRqFTUXR4QmirT3HZnfus/L1DS08Vm5CkoKmL0iMVt6YbqEag==", + "version": "3.996.30", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.30.tgz", + "integrity": "sha512-HULDLMVzkmTSEv6//7kx2kRevp/VYUpm8hJNNFbmhxDn0fUiGTxVcM9yg31TukvTq8nyOBDUN2gH0o5IRbKjdw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/signature-v4": "^5.4.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/signature-v4": "^5.4.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -699,16 +606,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1047.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1047.0.tgz", - "integrity": "sha512-GwJUeMijpeO2SOGGLRg4q2Nj9foBUBd7hTALYVId+m8fQmA4P2hITp5dmrZFd4AjEkSVmt2eFqmk3TttF7HZeQ==", + "version": "3.1056.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1056.0.tgz", + "integrity": "sha512-81duvlltQlsfn5K+o8zILcystBRdbT1G2JJYVCML5NZHBz4CL/zf+sAemCtBh/uh6RQUMyInGeZLQ7/8igZhbA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.10", - "@aws-sdk/nested-clients": "^3.997.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.5", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -716,27 +623,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", - "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", + "version": "3.973.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.9.tgz", + "integrity": "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.9.tgz", - "integrity": "sha512-ibx8Vd73rCTHekNGeXX8cpGWoBKbNAlwKHL3yjSxxttu5QnNDaSAM7/0MFYDjU31/F4lyrPoQcGirT0ew61xcg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -755,50 +647,13 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.11.tgz", - "integrity": "sha512-kq3RS6XQtHMrLFShbkem6h+8fxazB3jEIsbMC6aaSInOciRGE+eGAqTgJ+obO7Euo/pjM8thVqLiLISEH9X9DA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.26.tgz", - "integrity": "sha512-9bHR/EERjhrUGyo1qW620ogbGBtCglYB/pEtcm85sVd4/Ah+bwdLI3g1aJf75oNwNwh7+fw+8wOk/OCWHjzVmA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.40", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.24", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", - "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", + "version": "3.972.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.26.tgz", + "integrity": "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g==", "license": "Apache-2.0", "dependencies": { - "@nodable/entities": "2.1.0", - "@smithy/types": "^4.14.1", + "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" }, @@ -2002,9 +1857,9 @@ "license": "MIT" }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.9.tgz", - "integrity": "sha512-PZm6O9JI/gUPtQV9r2eaMuLb4yWqV2vz+ot03ORHWTKO343LSpZi0TqeXLB2ZZGDXLCw2SbfgsQ0GxoxXMl79g==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.10.tgz", + "integrity": "sha512-XeJihYLy1lCe19xfK1KWKG/betBOK2rB0luL8lSkjfvJj0zP+LTJvkC+RKd0jsFI8mWxN71LrarHSrEXE8xxOQ==", "license": "MIT", "dependencies": { "@formatjs/icu-skeleton-parser": "2.1.9" @@ -2052,9 +1907,9 @@ "license": "MIT" }, "node_modules/@hookform/resolvers": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", - "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.4.0.tgz", + "integrity": "sha512-EIsqr/t/qbinPIhGjMdtvutIN1Kk4uwbROE9/UQ93CAVGR7GkA7Y92+fX80OzXi/OB67jVFYwKGO1WzkxmkFZw==", "license": "MIT", "dependencies": { "@standard-schema/utils": "^0.3.0" @@ -2623,9 +2478,9 @@ } }, "node_modules/@ioredis/commands": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", - "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.10.0.tgz", + "integrity": "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==", "license": "MIT" }, "node_modules/@jridgewell/gen-mapping": { @@ -2906,9 +2761,9 @@ } }, "node_modules/@nodable/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.1.tgz", + "integrity": "sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==", "funding": [ { "type": "github", @@ -4010,18 +3865,18 @@ } }, "node_modules/@posthog/core": { - "version": "1.29.1", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.29.1.tgz", - "integrity": "sha512-q+/t/DZALr50YTE0dFgfGSS9EgwcyAlqsn+JS61wLkwdcDM5yu/YTDM8oMKmJupsyjSZlVkDuHZAMd4ab7AxzQ==", + "version": "1.29.13", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.29.13.tgz", + "integrity": "sha512-7Me5zaeAue/wmA364Go8ChYbsVAfNAHbtDxXopWu3D6hq9PVScUcauRgjD1njgvP8NzN91SrIllE+pri3XvJVw==", "license": "MIT", "dependencies": { - "@posthog/types": "1.373.4" + "@posthog/types": "1.376.4" } }, "node_modules/@posthog/types": { - "version": "1.373.4", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.373.4.tgz", - "integrity": "sha512-n+0AbGRYYsbi+CQXQi2rF1lwTSyASlaogcw4YSkzB5KeMa4Y6nhNb7+TTnu9aVor+BycsQYCa2OsBrMMbaTekw==", + "version": "1.376.4", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.376.4.tgz", + "integrity": "sha512-EoDEvA925lf6yxPpbP4wozlXgu4b9WEqxZlFBUDd4k2akP5R/RWyHpvQT8aYyfY6BtSLn8TnVwxPQOM4b90isA==", "license": "MIT" }, "node_modules/@radix-ui/number": { @@ -6704,9 +6559,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", - "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.5.tgz", + "integrity": "sha512-Kt8phUg45M15EjhYAbZ+fFikYneijLu9Liugz8ZsYz2i8j0hzGv27LWKpEHYRfvj+LyCOSijpcR/2i8RouV+cA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -6718,12 +6573,12 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", - "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.5.tgz", + "integrity": "sha512-yiF8xHpdkaTfzLVqFzsP6WvNghEK+qZzLYWFD13L2SsFhbXwBGlxdocKF95qjr7s5lE5NRage+EJFK4mAsx88Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -6732,12 +6587,12 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", - "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.5.tgz", + "integrity": "sha512-SK3VMeH0fibgdTg2QeB+O4p7Yy/2E5HBOHJeC58FshkDdeuX8lOgO7PfjYfLyPLP1ch55j91cQqKBzDS0mRjSQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -6758,12 +6613,12 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", - "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.5.tgz", + "integrity": "sha512-3dA9TQ+ybRSZ/m0wnbZhiBy4Dezjgq1Ib/ZZrYTpJDBgpoLLU/SDzZc/g0x0MNAdOJe1wPcM+x2PBRmoOur+Sw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -6772,12 +6627,12 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", - "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.5.tgz", + "integrity": "sha512-QBJKWGqIknH0dc9LWpfH1mkdokAx6iXYN3UcQ3eY6uIEyScuoQAhfl94ge7ozUy9WgFUdE8xsvwBjaYBbWmPNA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -9641,9 +9496,9 @@ } }, "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", "license": "Apache-2.0", "engines": { "node": ">=0.10.0" @@ -12721,12 +12576,15 @@ } }, "node_modules/helmet": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz", - "integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.2.0.tgz", + "integrity": "sha512-DRgTIUgnWcJ62KyarxxziuqYxKGnR6Rgg19BlbucN/dpmJbl1XOit6qvoOX0ZT+HhWe5OUVhU/a1zpGyc1xA0Q==", "license": "MIT", "engines": { "node": ">=18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/EvanHahn" } }, "node_modules/hermes-estree": { @@ -12837,9 +12695,9 @@ } }, "node_modules/icu-minify": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/icu-minify/-/icu-minify-4.12.0.tgz", - "integrity": "sha512-zDmM05uav3t3+kxSfRrNlmyXOdj2b+uHA+p04CG32eJabtaHbugXujuL+YfRkwP9joAnf0Uh+RMGCKD5NLa5rQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/icu-minify/-/icu-minify-4.13.0.tgz", + "integrity": "sha512-SIFMeUHZJjzS5RvIGvybKvWoHjDm9cGVEs2EpJ8PmywOdJLWyblPm7TdPLLoUtkJtwQD7iGhl2WMptZ+N0on+w==", "funding": [ { "type": "individual", @@ -12948,30 +12806,28 @@ } }, "node_modules/intl-messageformat": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.2.6.tgz", - "integrity": "sha512-afAN2yNN7zjB77G1ZC5L8GtLrEshyBvOQXz88flxCO/ocTIQist98gu0r/O6H/SSiQhQsOOtWPxmCEvtDABXXQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.2.7.tgz", + "integrity": "sha512-+q6Ktg119nULZEpZ8YTuGOst9MyEzFtjD63FTGBlN1mLz0Z/MOUYDIvnpVKwq17eezIEh+cfJIebfJoCetpiNw==", "license": "BSD-3-Clause", "dependencies": { "@formatjs/fast-memoize": "3.1.5", - "@formatjs/icu-messageformat-parser": "3.5.9" + "@formatjs/icu-messageformat-parser": "3.5.10" } }, "node_modules/ioredis": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", - "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.11.0.tgz", + "integrity": "sha512-EZBErytyVovD8f6pDfG3Kb37N6Y3lmDA9NNj+4+IP13CzzHGeX+OyeRM2Um13khRzoBSzzL+5lVnCX8V2RLeMg==", "license": "MIT", "dependencies": { - "@ioredis/commands": "1.5.1", - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.4", - "denque": "^2.1.0", - "lodash.defaults": "^4.2.0", - "lodash.isarguments": "^3.1.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" + "@ioredis/commands": "1.10.0", + "cluster-key-slot": "1.1.1", + "debug": "4.4.3", + "denque": "2.1.0", + "redis-errors": "1.2.0", + "redis-parser": "3.0.0", + "standard-as-callback": "2.1.0" }, "engines": { "node": ">=12.22.0" @@ -13980,24 +13836,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "license": "MIT" - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", - "license": "MIT" - }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -14519,9 +14363,9 @@ } }, "node_modules/next-intl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.12.0.tgz", - "integrity": "sha512-v8KpppWG0yLLlChJ3Of6uoPew9LeRDBAtY6vpJmF7YJmBZlHEzzoEL4w1g1dAU+VleEPNoXNm9hg1eEsKWV5hw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.13.0.tgz", + "integrity": "sha512-OvNq2v5XLx4EkQOsAhVE9g+6zdb83XHusADCXXtIW4LILYnjEVaeINdr1lkVWKSjzwNUiMSlH5N4K0OQTRiv6A==", "funding": [ { "type": "individual", @@ -14533,11 +14377,11 @@ "@formatjs/intl-localematcher": "^0.8.1", "@parcel/watcher": "^2.4.1", "@swc/core": "^1.15.2", - "icu-minify": "^4.12.0", + "icu-minify": "^4.13.0", "negotiator": "^1.0.0", - "next-intl-swc-plugin-extractor": "^4.12.0", + "next-intl-swc-plugin-extractor": "^4.13.0", "po-parser": "^2.1.1", - "use-intl": "^4.12.0" + "use-intl": "^4.13.0" }, "peerDependencies": { "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", @@ -14550,9 +14394,9 @@ } }, "node_modules/next-intl-swc-plugin-extractor": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/next-intl-swc-plugin-extractor/-/next-intl-swc-plugin-extractor-4.12.0.tgz", - "integrity": "sha512-jUxVEu1Nryjt4YgaDktSys7ioOgQfcNPF/SF2dbPNxbVb6U+P1INRgHeCVN+EC59H2rnTFIQwbddmOCrUWFr3g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/next-intl-swc-plugin-extractor/-/next-intl-swc-plugin-extractor-4.13.0.tgz", + "integrity": "sha512-6S/fJI0KXvLCL8nhBo9P8eGaJPzmwJBTCzX0NaUIj0VyU8U89d//T+vjMLdNIXl5MlLaYH7B9MbAjb8Mvu+tqQ==", "license": "MIT" }, "node_modules/next-themes": { @@ -15387,14 +15231,14 @@ } }, "node_modules/pg": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", - "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz", + "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.12.0", - "pg-pool": "^3.13.0", - "pg-protocol": "^1.13.0", + "pg-connection-string": "^2.13.0", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.14.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -15402,7 +15246,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.3.0" + "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -15414,16 +15258,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", - "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", + "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", - "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz", + "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==", "license": "MIT" }, "node_modules/pg-int8": { @@ -15436,18 +15280,18 @@ } }, "node_modules/pg-pool": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", - "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz", + "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==", "license": "MIT" }, "node_modules/pg-types": { @@ -15600,12 +15444,12 @@ } }, "node_modules/posthog-node": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.34.1.tgz", - "integrity": "sha512-kGl0kSfh2+Ey3KL5Sji3yv9W5xwPK9sTkINRoFqCh9fbYXWWY6Zwi5Psv2QmRcbYiMJBk/iecnoOKVDRRga6PA==", + "version": "5.35.6", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.35.6.tgz", + "integrity": "sha512-LwoXnR89A0l75jvFrXjtsAs0BbpyCjnwY8YIUkZT91rt1YnIUfBYiLj7qoUYApdNgesgWQQHqLXxLYX59a6ZYw==", "license": "MIT", "dependencies": { - "@posthog/core": "1.29.1" + "@posthog/core": "1.29.13" }, "engines": { "node": "^20.20.0 || >=22.22.0" @@ -16047,9 +15891,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.75.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.75.0.tgz", - "integrity": "sha512-Ovv94H+0p3sJ7B9B5QxPuCP1u8V/cHuVGyH55cSwodYDtoJwK+fqk3vjfIgSX59I2U/bU4z0nRJ9HMLpNiWEmw==", + "version": "7.76.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.76.1.tgz", + "integrity": "sha512-rYM7tPiWlu3nZchkR/ex7piyzui2vFPyaLnXnI/RnblB/L4qfMmyses8llJVtF1NpE9WBBsJlGtcSZzPCXW1qQ==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -18134,9 +17978,9 @@ } }, "node_modules/use-intl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-4.12.0.tgz", - "integrity": "sha512-r+qVb7UI1+kiOhjYsmsNUCY+jrnjVopwGeFlmMyQj4YInlwZzgMeMSv9n8MqnWWy77HL5BVM8K2WgX50SbtcpA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-4.13.0.tgz", + "integrity": "sha512-fAFDrWaASxlhXOipcOyb5VDD+YONqj6+8O8EcG/J7RBoOUF3A8YahRWLN+mBxYMrlMQB8N6Voqk5X+YC+HSL0A==", "funding": [ { "type": "individual", @@ -18147,7 +17991,7 @@ "dependencies": { "@formatjs/fast-memoize": "^3.1.0", "@schummar/icu-type-parser": "1.21.5", - "icu-minify": "^4.12.0", + "icu-minify": "^4.13.0", "intl-messageformat": "^11.1.0" }, "peerDependencies": { @@ -18466,9 +18310,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", - "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index e7c99dfc1..aed9d5940 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,10 @@ }, "dependencies": { "@asteasolutions/zod-to-openapi": "8.5.0", - "@aws-sdk/client-s3": "3.1047.0", + "@aws-sdk/client-s3": "3.1056.0", "@faker-js/faker": "10.4.0", "@headlessui/react": "2.2.10", - "@hookform/resolvers": "5.2.2", + "@hookform/resolvers": "5.4.0", "@monaco-editor/react": "4.7.0", "@node-rs/argon2": "2.0.2", "@oslojs/crypto": "1.0.1", @@ -83,10 +83,10 @@ "express": "5.2.1", "express-rate-limit": "8.5.2", "glob": "13.0.6", - "helmet": "8.1.0", + "helmet": "8.2.0", "http-errors": "2.0.1", "input-otp": "1.4.2", - "ioredis": "5.10.1", + "ioredis": "5.11.0", "jmespath": "0.16.0", "js-yaml": "4.1.1", "jsonwebtoken": "9.0.3", @@ -94,20 +94,20 @@ "maxmind": "5.0.6", "moment": "2.30.1", "next": "16.2.6", - "next-intl": "4.12.0", + "next-intl": "4.13.0", "next-themes": "0.4.6", "nextjs-toploader": "3.9.17", "node-cache": "5.1.2", "nodemailer": "8.0.9", "oslo": "1.2.1", - "pg": "8.20.0", - "posthog-node": "5.34.1", + "pg": "8.21.0", + "posthog-node": "5.35.6", "qrcode.react": "4.2.0", "react": "19.2.6", "react-day-picker": "9.14.0", "react-dom": "19.2.6", "react-easy-sort": "1.8.0", - "react-hook-form": "7.75.0", + "react-hook-form": "7.76.1", "react-icons": "5.6.0", "recharts": "3.8.1", "reodotdev": "1.1.0", @@ -124,7 +124,7 @@ "visionscarto-world-atlas": "1.0.0", "winston": "3.19.0", "winston-daily-rotate-file": "5.0.0", - "ws": "8.20.1", + "ws": "8.21.0", "yaml": "2.9.0", "yargs": "18.0.0", "zod": "4.4.3", From 84d7a876091c6bc9e895dba08c3532837600f89a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 01:43:42 +0000 Subject: [PATCH 09/11] Bump stripe from 20.4.1 to 22.2.0 Bumps [stripe](https://github.com/stripe/stripe-node) from 20.4.1 to 22.2.0. - [Release notes](https://github.com/stripe/stripe-node/releases) - [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md) - [Commits](https://github.com/stripe/stripe-node/compare/v20.4.1...v22.2.0) --- updated-dependencies: - dependency-name: stripe dependency-version: 22.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b12c9d468..5a7026748 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,7 @@ "reodotdev": "1.1.0", "semver": "7.8.1", "sshpk": "1.18.0", - "stripe": "20.4.1", + "stripe": "22.2.0", "swagger-ui-express": "5.0.1", "tailwind-merge": "3.6.0", "topojson-client": "3.1.0", @@ -17314,15 +17314,15 @@ } }, "node_modules/stripe": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-20.4.1.tgz", - "integrity": "sha512-axCguHItc8Sxt0HC6aSkdVRPffjYPV7EQqZRb2GkIa8FzWDycE7nHJM19C6xAIynH1Qp1/BHiopSi96jGBxT0w==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-22.2.0.tgz", + "integrity": "sha512-WFGpMOom9QZqso1kcnSwJsCdC1QHDlMoCOxBZRf3JraMzhkfw7dgSdD2a1CFZrqC+mzAfqeEtYILrZhWKIDruA==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "@types/node": ">=16" + "@types/node": ">=18" }, "peerDependenciesMeta": { "@types/node": { diff --git a/package.json b/package.json index e7c99dfc1..fe19006f3 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "reodotdev": "1.1.0", "semver": "7.8.1", "sshpk": "1.18.0", - "stripe": "20.4.1", + "stripe": "22.2.0", "swagger-ui-express": "5.0.1", "tailwind-merge": "3.6.0", "topojson-client": "3.1.0", From 4012cc658d230ae60f02ff47e6dffb60491c55b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 01:44:09 +0000 Subject: [PATCH 10/11] Bump lucide-react from 0.577.0 to 1.17.0 Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.577.0 to 1.17.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.17.0/packages/lucide-react) --- updated-dependencies: - dependency-name: lucide-react dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b12c9d468..8abc6152d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "jmespath": "0.16.0", "js-yaml": "4.1.1", "jsonwebtoken": "9.0.3", - "lucide-react": "0.577.0", + "lucide-react": "1.17.0", "maxmind": "5.0.6", "moment": "2.30.1", "next": "16.2.6", @@ -14090,9 +14090,9 @@ } }, "node_modules/lucide-react": { - "version": "0.577.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.577.0.tgz", - "integrity": "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.17.0.tgz", + "integrity": "sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w==", "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" diff --git a/package.json b/package.json index e7c99dfc1..d589bff96 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "jmespath": "0.16.0", "js-yaml": "4.1.1", "jsonwebtoken": "9.0.3", - "lucide-react": "0.577.0", + "lucide-react": "1.17.0", "maxmind": "5.0.6", "moment": "2.30.1", "next": "16.2.6", From b0d1291cffadde8a45af8fee88da35f1163c0df3 Mon Sep 17 00:00:00 2001 From: Shlee Date: Sat, 30 May 2026 02:43:59 +1000 Subject: [PATCH 11/11] Installer: Bootstrap optional PostgreSQL/Redis (#3152) * Make optional postgres and redis in installer --- install/config/config.yml | 5 +++ install/config/docker-compose.yml | 66 ++++++++++++++++++++++++++++++- install/config/privateConfig.yml | 6 +++ install/main.go | 15 +++++++ 4 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 install/config/privateConfig.yml diff --git a/install/config/config.yml b/install/config/config.yml index 1f50057e8..85dbc944f 100644 --- a/install/config/config.yml +++ b/install/config/config.yml @@ -37,3 +37,8 @@ flags: disable_signup_without_invite: true disable_user_create_org: false allow_raw_resources: true + +{{if .IsPostgreSQL}} +postgres: + connection_string: postgresql://pangolin:{{.IsPostgreSQLPass}}@postgres:5432/pangolin +{{end}} diff --git a/install/config/docker-compose.yml b/install/config/docker-compose.yml index 505089bed..fe6a41644 100644 --- a/install/config/docker-compose.yml +++ b/install/config/docker-compose.yml @@ -1,7 +1,7 @@ name: pangolin services: pangolin: - image: docker.io/fosrl/pangolin:{{if .IsEnterprise}}ee-{{end}}{{.PangolinVersion}} + image: docker.io/fosrl/pangolin:{{if .IsEnterprise}}ee-{{end}}{{if .IsPostgreSQL}}postgresql-{{end}}{{.PangolinVersion}} container_name: pangolin restart: unless-stopped deploy: @@ -10,6 +10,20 @@ services: memory: 1g reservations: memory: 256m +{{if or .IsPostgreSQL .IsRedis}} + depends_on: + {{if .IsPostgreSQL}} + postgres: + condition: service_healthy + {{end}} + {{if .IsRedis}} + redis: + condition: service_healthy + {{end}} + networks: + - default + - backend +{{end}} volumes: - ./config:/app/config healthcheck: @@ -60,8 +74,56 @@ services: - ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates - ./config/traefik/logs:/var/log/traefik # Volume to store Traefik logs +{{if .IsPostgreSQL}} + postgres: + image: postgres:18 + container_name: postgres + restart: unless-stopped + environment: + POSTGRES_USER: pangolin + POSTGRES_PASSWORD: {{.IsPostgreSQLPass}} + POSTGRES_DB: pangolin + volumes: + - ./postgres18:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U pangolin"] + interval: 10s + timeout: 5s + retries: 5 + networks: + - backend +{{end}} + +{{if .IsRedis}} + redis: + image: redis:8-trixie + container_name: redis + restart: unless-stopped + command: > + redis-server + --save 3600 1000 + --appendonly yes + --requirepass {{.IsRedisPass}} + volumes: + - ./redis8:/data + healthcheck: + test: ["CMD", "redis-cli", "-a", "{{.IsRedisPass}}", "ping"] + interval: 10s + timeout: 3s + retries: 3 + start_period: 10s + networks: + - backend +{{end}} + networks: default: driver: bridge - name: pangolin + name: pangolin_frontend {{if .EnableIPv6}} enable_ipv6: true{{end}} +{{if or .IsPostgreSQL .IsRedis}} + backend: + driver: bridge + name: pangolin_backend + internal: true +{{end}} diff --git a/install/config/privateConfig.yml b/install/config/privateConfig.yml new file mode 100644 index 000000000..58a4c9435 --- /dev/null +++ b/install/config/privateConfig.yml @@ -0,0 +1,6 @@ +{{if .IsRedis}} +redis: + host: "redis" + port: 6379 + password: "{{.IsRedisPass}}" +{{end}} diff --git a/install/main.go b/install/main.go index f12a0c769..5687f6f5d 100644 --- a/install/main.go +++ b/install/main.go @@ -57,6 +57,10 @@ type Config struct { EnableMaxMind bool Secret string IsEnterprise bool + IsPostgreSQL bool + IsPostgreSQLPass string + IsRedis bool + IsRedisPass string } type SupportedContainer string @@ -486,6 +490,17 @@ func collectUserInput() Config { fmt.Println("\n=== Basic Configuration ===") config.IsEnterprise = readBoolNoDefault("Do you want to install the Enterprise version of Pangolin? The EE is free for personal use or for businesses making less than 100k USD annually.") + if config.IsEnterprise { + config.IsRedis = readBool("Do you want to run the Redis containers locally? Required for HA.") + if config.IsRedis { + config.IsRedisPass = readPassword("Enter a unique password for the Redis service.") + } + } + + config.IsPostgreSQL = readBool("Do you want to run the PostgreSQL containers locally? Otherwise, default to the local SQLite database only.", false) + if config.IsPostgreSQL { + config.IsPostgreSQLPass = readPassword("Enter a unique password for the PostgreSQL pangolin user.") + } config.BaseDomain = readString("Enter your base domain (no subdomain e.g. example.com)", "")