@tmlmobilidade/types
Version:
28 lines (27 loc) • 760 B
JavaScript
/* * */
import { HttpStatusSchema } from './http-status.js';
import { z } from 'zod';
/* * */
export const ApiResponseSuccessSchema = z.object({
data: z.any(),
error: z.null(),
status_code: HttpStatusSchema.extract([
'200', // OK
'201', // Created
'204', // No Content
]),
});
/* * */
export const ApiResponseErrorSchema = z.object({
data: z.null(),
error: z.string(),
status_code: HttpStatusSchema.extract([
'400', // Bad Request
'401', // Unauthorized
'403', // Forbidden
'404', // Not Found
'500', // Internal Server Error
]),
});
/* * */
export const ApiResponseSchema = z.discriminatedUnion('status_code', [ApiResponseSuccessSchema, ApiResponseErrorSchema]);