UNPKG

adpa-enterprise-framework-automation

Version:

Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe

67 lines 2.57 kB
import { createRequire } from 'module'; const require = createRequire(import.meta.url); const Joi = require('joi'); // Common schemas export const uuidSchema = Joi.string().uuid().required(); export const paginationSchema = Joi.object({ page: Joi.number().integer().min(1).default(1), limit: Joi.number().integer().min(1).max(100).default(20), sort: Joi.string().valid('created', 'updated', 'name', 'status').default('created'), order: Joi.string().valid('asc', 'desc').default('desc') }); // Document conversion schemas export const documentConversionSchema = { body: Joi.object({ content: Joi.string().min(1).required(), inputFormat: Joi.string().valid('markdown', 'html', 'docx', 'txt', 'rtf').required(), outputFormat: Joi.string().valid('pdf', 'docx', 'html').required(), templateId: Joi.string().uuid().optional(), metadata: Joi.object().optional(), options: Joi.object({ includeMetadata: Joi.boolean().default(true), watermark: Joi.string(), password: Joi.string(), compression: Joi.string().valid('none', 'low', 'medium', 'high').default('medium') }).optional() }), params: Joi.object({}), query: Joi.object({}) }; export const documentBatchSchema = { body: Joi.object({ jobs: Joi.array().items(Joi.object({ templateId: Joi.string().uuid().required(), data: Joi.object().required(), outputFormat: Joi.string().valid('docx', 'pdf', 'html').default('docx'), filename: Joi.string().optional() })).min(1).max(50).required(), options: Joi.object({ parallel: Joi.boolean().default(true), notifyOnComplete: Joi.boolean().default(false), webhookUrl: Joi.string().uri().optional() }).optional() }) }; export const documentStatusSchema = { params: Joi.object({ jobId: uuidSchema }) }; export const documentDownloadSchema = { params: Joi.object({ jobId: uuidSchema }), query: Joi.object({ format: Joi.string().valid('attachment', 'inline').default('attachment') }) }; // Document listing schemas export const documentListSchema = { query: paginationSchema.keys({ status: Joi.string().valid('pending', 'processing', 'completed', 'failed').optional(), templateId: Joi.string().uuid().optional(), createdAfter: Joi.date().iso().optional(), createdBefore: Joi.date().iso().optional() }) }; //# sourceMappingURL=documentSchemas.js.map