feat(api-docs): add error responses to API documentation

This commit is contained in:
Daniel Hougaard
2024-09-27 20:02:43 +04:00
parent 2d51ed317f
commit 7ac4b0b79f
39 changed files with 297 additions and 14 deletions
@@ -13,6 +13,8 @@ import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type";
import { ProjectUserMembershipTemporaryMode } from "@app/services/project-membership/project-membership-types";
import { DefaultResponseErrorsSchema } from "../sanitizedSchemas";
export const registerGroupProjectRouter = async (server: FastifyZodProvider) => {
server.route({
method: "POST",
@@ -63,6 +65,7 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
path: ["role", "roles"]
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
groupMembership: GroupProjectMembershipsSchema
})
@@ -119,6 +122,7 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
.describe(PROJECTS.UPDATE_GROUP_IN_PROJECT.roles)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
roles: ProjectUserMembershipRolesSchema.array()
})
@@ -158,6 +162,7 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
groupId: z.string().trim().describe(PROJECTS.REMOVE_GROUP_FROM_PROJECT.groupId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
groupMembership: GroupProjectMembershipsSchema
})
@@ -195,6 +200,7 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
projectId: z.string().trim().describe(PROJECTS.LIST_GROUPS_IN_PROJECT.projectId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
groupMemberships: z
.object({
@@ -254,6 +260,7 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
groupId: z.string().trim()
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
groupMembership: z.object({
id: z.string(),
@@ -8,6 +8,8 @@ import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type";
import { OrgIdentityOrderBy } from "@app/services/identity/identity-types";
import { DefaultResponseErrorsSchema } from "../sanitizedSchemas";
export const registerIdentityOrgRouter = async (server: FastifyZodProvider) => {
server.route({
method: "GET",
@@ -48,6 +50,7 @@ export const registerIdentityOrgRouter = async (server: FastifyZodProvider) => {
search: z.string().trim().describe(ORGANIZATIONS.LIST_IDENTITY_MEMBERSHIPS.search).optional()
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
identityMemberships: IdentityOrgMembershipsSchema.merge(
z.object({
@@ -16,7 +16,7 @@ import { AuthMode } from "@app/services/auth/auth-type";
import { ProjectIdentityOrderBy } from "@app/services/identity-project/identity-project-types";
import { ProjectUserMembershipTemporaryMode } from "@app/services/project-membership/project-membership-types";
import { SanitizedProjectSchema } from "../sanitizedSchemas";
import { DefaultResponseErrorsSchema, SanitizedProjectSchema } from "../sanitizedSchemas";
export const registerIdentityProjectRouter = async (server: FastifyZodProvider) => {
server.route({
@@ -71,6 +71,7 @@ export const registerIdentityProjectRouter = async (server: FastifyZodProvider)
.optional()
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
identityMembership: IdentityProjectMembershipsSchema
})
@@ -143,6 +144,7 @@ export const registerIdentityProjectRouter = async (server: FastifyZodProvider)
.describe(PROJECT_IDENTITIES.UPDATE_IDENTITY_MEMBERSHIP.roles.description)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
roles: ProjectUserMembershipRolesSchema.array()
})
@@ -181,6 +183,7 @@ export const registerIdentityProjectRouter = async (server: FastifyZodProvider)
identityId: z.string().trim().describe(PROJECT_IDENTITIES.DELETE_IDENTITY_MEMBERSHIP.identityId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
identityMembership: IdentityProjectMembershipsSchema
})
@@ -243,6 +246,7 @@ export const registerIdentityProjectRouter = async (server: FastifyZodProvider)
search: z.string().trim().describe(PROJECT_IDENTITIES.LIST_IDENTITY_MEMBERSHIPS.search).optional()
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
identityMemberships: z
.object({
@@ -308,6 +312,7 @@ export const registerIdentityProjectRouter = async (server: FastifyZodProvider)
identityId: z.string().trim().describe(PROJECT_IDENTITIES.GET_IDENTITY_MEMBERSHIP_BY_ID.identityId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
identityMembership: z.object({
id: z.string(),
@@ -13,6 +13,8 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { ActorType, AuthMode } from "@app/services/auth/auth-type";
import { DefaultResponseErrorsSchema } from "../sanitizedSchemas";
export const registerOrgRouter = async (server: FastifyZodProvider) => {
server.route({
method: "GET",
@@ -31,6 +33,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => {
organizationId: z.string().trim().describe(ORGANIZATIONS.LIST_USER_MEMBERSHIPS.organizationId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
users: OrgMembershipsSchema.merge(
z.object({
@@ -79,6 +82,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => {
organizationId: z.string().trim().describe(ORGANIZATIONS.GET_PROJECTS.organizationId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
workspaces: z
.object({
@@ -181,6 +185,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => {
isActive: z.boolean().optional().describe(ORGANIZATIONS.UPDATE_USER_MEMBERSHIP.isActive)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
membership: OrgMembershipsSchema
})
@@ -220,6 +225,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => {
membershipId: z.string().trim().describe(ORGANIZATIONS.DELETE_USER_MEMBERSHIP.membershipId)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
membership: OrgMembershipsSchema
})
@@ -7,6 +7,8 @@ import { writeLimit } from "@app/server/config/rateLimiter";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type";
import { DefaultResponseErrorsSchema } from "../sanitizedSchemas";
export const registerProjectMembershipRouter = async (server: FastifyZodProvider) => {
server.route({
method: "POST",
@@ -30,6 +32,7 @@ export const registerProjectMembershipRouter = async (server: FastifyZodProvider
roleSlugs: z.string().array().optional().describe(PROJECT_USERS.INVITE_MEMBER.roleSlugs)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
memberships: ProjectMembershipsSchema.array()
})
@@ -92,6 +95,7 @@ export const registerProjectMembershipRouter = async (server: FastifyZodProvider
usernames: z.string().array().default([]).describe(PROJECT_USERS.REMOVE_MEMBER.usernames)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
memberships: ProjectMembershipsSchema.array()
})
@@ -19,7 +19,7 @@ import { sanitizedCertificateTemplate } from "@app/services/certificate-template
import { ProjectFilterType } from "@app/services/project/project-types";
import { PostHogEventTypes } from "@app/services/telemetry/telemetry-types";
import { SanitizedProjectSchema } from "../sanitizedSchemas";
import { DefaultResponseErrorsSchema, SanitizedProjectSchema } from "../sanitizedSchemas";
const projectWithEnv = SanitizedProjectSchema.extend({
_id: z.string(),
@@ -172,6 +172,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => {
kmsKeyId: z.string().optional()
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
project: projectWithEnv
})
@@ -221,6 +222,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => {
slug: slugSchema.describe("The slug of the project to delete.")
}),
response: {
...DefaultResponseErrorsSchema,
200: SanitizedProjectSchema
}
},
@@ -376,6 +378,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => {
limit: z.coerce.number().min(1).max(100).default(25).describe(PROJECTS.LIST_CERTIFICATES.limit)
}),
response: {
...DefaultResponseErrorsSchema,
200: z.object({
certificates: z.array(CertificatesSchema),
totalCount: z.number()
@@ -7,7 +7,7 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type";
import { sanitizedServiceTokenUserSchema } from "../sanitizedSchemas";
import { DefaultResponseErrorsSchema, sanitizedServiceTokenUserSchema } from "../sanitizedSchemas";
export const sanitizedServiceTokenSchema = ServiceTokensSchema.omit({
secretHash: true,
@@ -32,6 +32,7 @@ export const registerServiceTokenRouter = async (server: FastifyZodProvider) =>
}
],
response: {
...DefaultResponseErrorsSchema,
200: ServiceTokensSchema.merge(
z.object({
workspace: z.string(),