@vfarcic/dot-ai
Version:
AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance
118 lines (117 loc) • 4.08 kB
JavaScript
"use strict";
/**
* Common REST API Response Schemas
*
* Base schemas used by all REST API endpoints.
* PRD #354: REST API Route Registry with Auto-Generated OpenAPI and Test Fixtures
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.InternalServerErrorSchema = exports.ServiceUnavailableErrorSchema = exports.MethodNotAllowedErrorSchema = exports.BadRequestErrorSchema = exports.NotFoundErrorSchema = exports.ErrorResponseSchema = exports.RestApiResponseSchema = exports.ErrorDetailsSchema = exports.MetaSchema = void 0;
exports.createSuccessResponseSchema = createSuccessResponseSchema;
const zod_1 = require("zod");
/**
* Response metadata schema
*/
exports.MetaSchema = zod_1.z.object({
timestamp: zod_1.z.string().describe('ISO 8601 timestamp of the response'),
requestId: zod_1.z
.string()
.optional()
.describe('Unique request identifier for tracing'),
version: zod_1.z.string().describe('API version'),
});
/**
* Error details schema
*/
exports.ErrorDetailsSchema = zod_1.z.object({
code: zod_1.z.string().describe('Machine-readable error code'),
message: zod_1.z.string().describe('Human-readable error message'),
details: zod_1.z.any().optional().describe('Additional error context'),
});
/**
* Base REST API response schema
* All endpoint responses extend this structure
*/
exports.RestApiResponseSchema = zod_1.z.object({
success: zod_1.z.boolean().describe('Whether the request was successful'),
data: zod_1.z.any().optional().describe('Response payload'),
error: exports.ErrorDetailsSchema.optional().describe('Error information if success is false'),
meta: exports.MetaSchema.optional().describe('Response metadata'),
});
/**
* Success response factory - creates a typed success response schema
*/
function createSuccessResponseSchema(dataSchema) {
return zod_1.z.object({
success: zod_1.z.literal(true),
data: dataSchema,
meta: exports.MetaSchema.optional(),
});
}
/**
* Error response schema for failed requests
*/
exports.ErrorResponseSchema = zod_1.z.object({
success: zod_1.z.literal(false),
error: exports.ErrorDetailsSchema,
meta: exports.MetaSchema.optional(),
});
/**
* Common error response schemas by HTTP status
*/
exports.NotFoundErrorSchema = exports.ErrorResponseSchema.extend({
error: exports.ErrorDetailsSchema.extend({
code: zod_1.z.literal('NOT_FOUND'),
}),
});
exports.BadRequestErrorSchema = exports.ErrorResponseSchema.extend({
error: exports.ErrorDetailsSchema.extend({
code: zod_1.z.enum([
'BAD_REQUEST',
'INVALID_REQUEST',
'MISSING_PARAMETER',
'INVALID_PARAMETER',
'VALIDATION_ERROR',
]),
}),
});
exports.MethodNotAllowedErrorSchema = exports.ErrorResponseSchema.extend({
error: exports.ErrorDetailsSchema.extend({
code: zod_1.z.literal('METHOD_NOT_ALLOWED'),
}),
});
exports.ServiceUnavailableErrorSchema = exports.ErrorResponseSchema.extend({
error: exports.ErrorDetailsSchema.extend({
code: zod_1.z.enum([
'AI_NOT_CONFIGURED',
'PLUGIN_UNAVAILABLE',
'VECTOR_DB_UNAVAILABLE',
'SERVICE_UNAVAILABLE',
]),
}),
});
exports.InternalServerErrorSchema = exports.ErrorResponseSchema.extend({
error: exports.ErrorDetailsSchema.extend({
code: zod_1.z.enum([
'INTERNAL_ERROR',
'DISCOVERY_ERROR',
'EXECUTION_ERROR',
'OPENAPI_ERROR',
'SYNC_ERROR',
'RESOURCE_KINDS_ERROR',
'SEARCH_ERROR',
'LIST_RESOURCES_ERROR',
'NAMESPACES_ERROR',
'RESOURCE_ERROR',
'EVENTS_ERROR',
'LOGS_ERROR',
'PROMPTS_LIST_ERROR',
'PROMPT_GET_ERROR',
'VISUALIZATION_ERROR',
'SESSION_RETRIEVAL_ERROR',
'MIGRATION_ERROR',
'PROMPTS_CACHE_REFRESH_ERROR',
'USER_MANAGEMENT_ERROR',
]),
}),
});