UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

70 lines 2.66 kB
import { z } from 'zod'; import { BaseResponseSchema, HealthCheckDataSchema, PingDataSchema } from './schemas'; import { mysqlDatetimeSchema } from './schema-utils'; /** * Common schemas shared across all microservices * * This module contains frequently used schemas to reduce duplication * and ensure consistency across all API clients. */ // Health check schemas - standardized across all services export const CommonHealthCheckResponseSchema = BaseResponseSchema(HealthCheckDataSchema); export const CommonPingResponseSchema = BaseResponseSchema(PingDataSchema); // Common pagination patterns // Note: HTTP query parameters are always strings, so we use coercion for numbers export const StandardPaginationParamsSchema = z.object({ limit: z.coerce.number().min(1).max(1000).optional().default(10), offset: z.coerce.number().min(0).optional().default(0), orderBy: z.string().optional(), }); export const SearchablePaginationParamsSchema = StandardPaginationParamsSchema.extend({ q: z.string().optional(), }); // Edge caching parameters - used across all services // Note: HTTP query parameters are always strings, but we also accept numbers for JavaScript usage export const EdgeCacheParamsSchema = z.object({ edgeCache: z .union([ z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5), z.literal(8), // numbers z.literal('1'), z.literal('2'), z.literal('3'), z.literal('4'), z.literal('5'), z.literal('8'), // strings ]) .transform(val => (typeof val === 'string' ? parseInt(val) : val)) .optional(), }); // Common response patterns export const BooleanResponseSchema = BaseResponseSchema(z.boolean()); export const StringResponseSchema = BaseResponseSchema(z.string()); export const NumberResponseSchema = BaseResponseSchema(z.number()); // Common error response schema export const ErrorResponseSchema = z.object({ status: z.number(), message: z.string(), code: z.string().optional(), details: z.unknown().optional(), timestamp: z.string().optional(), }); // Common field patterns export const TimestampFieldsSchema = z.object({ dateCreated: mysqlDatetimeSchema().optional(), dateLastModified: mysqlDatetimeSchema().optional(), }); export const StatusFieldsSchema = z.object({ statusCd: z.number(), createCd: z.string(), updateCd: z.string(), }); // ID patterns export const NumericIdSchema = z.number().min(1); export const StringIdSchema = z.string().min(1); export const UuidSchema = z.string().uuid(); //# sourceMappingURL=common-schemas.js.map