feat(api): standardize errors as problem details

This commit is contained in:
dmg
2026-08-01 14:42:19 -04:00
parent 40abab7abc
commit 2657399628
16 changed files with 441 additions and 17 deletions
+29
View File
@@ -45,3 +45,32 @@ export const velocityAccessResponseSchema = z.discriminatedUnion("allowed", [
]);
export type VelocityAccessResponse = z.infer<typeof velocityAccessResponseSchema>;
export const problemDetailsSchema = z.object({
type: z.string().min(1),
title: z.string().min(1),
status: z.number().int().min(100).max(599),
detail: z.string().min(1).optional(),
instance: z.string().min(1).optional(),
extensions: z.record(z.string(), z.unknown()).optional(),
});
export type ProblemDetails = z.infer<typeof problemDetailsSchema>;
export function problemDetails(
type: string,
title: string,
status: number,
detail?: string,
instance?: string,
extensions?: Record<string, unknown>,
): ProblemDetails {
return {
type,
title,
status,
...(detail ? { detail } : {}),
...(instance ? { instance } : {}),
...(extensions ? { extensions } : {}),
};
}