tariffs/src/types/swagger.type.ts
2023-03-17 17:42:31 +00:00

51 lines
1.2 KiB
TypeScript

import type { FastifySchema } from "fastify";
export type SwaggerValueType =
| string
| number
| boolean
| null
| SwaggerValueType[]
| { [key: string]: SwaggerValueType };
type SwaggerMediaType = "object" | "string" | "integer" | "boolean" | "array" | "number";
type SwaggerMediaFormat =
| "binary"
| "base64"
| "uuid"
| "email"
| "date"
| "date-time"
| "password"
| "byte"
| "uri"
| "hostname"
| "ipv4"
| "ipv6";
export type SwaggerMessage = {
type?: SwaggerMediaType;
description?: string;
format?: SwaggerMediaFormat;
pattern?: string;
nullable?: boolean;
uniqueItems?: boolean;
writeOnly?: boolean;
readOnly?: boolean;
items?: SwaggerMessage;
additionalProperties?: SwaggerMessage | boolean;
properties?: Record<string, SwaggerMessage | Record<string, SwaggerValueType>>;
examples?: SwaggerValueType[];
example?: SwaggerValueType;
required?: string[];
oneOf?: SwaggerMessage[];
allOf?: SwaggerMessage[];
};
export type SwaggerSchema = FastifySchema & {
params?: SwaggerMessage;
body?: SwaggerMessage;
querystring?: SwaggerMessage;
response?: Record<number, SwaggerMessage>;
};