@soapjs/soap-zod
v1.0.0
Published
Zod HTTP contracts — one schema for validation middleware and OpenAPI fragments
Readme
@soapjs/soap-zod
One Zod schema for request validation and OpenAPI fragments — no duplicate JSON Schema definitions.
Depends only on @soapjs/soap (route apiDoc / DecoratorRegistry) and express (middleware shape). Does not require @soapjs/soap-express or @soapjs/soap-openapi.
Install
npm install @soapjs/soap-zod zod @soapjs/soap expressUse with @soapjs/soap-express controllers in your app if you like — that is an app choice, not a dependency of this package.
Usage
import { z } from 'zod';
import { Post, Controller } from '@soapjs/soap-express';
import { bodyContract } from '@soapjs/soap-zod';
const CreateBody = z.object({ name: z.string(), universe: z.enum(['marvel', 'dc']) });
@Controller('/characters')
class CharactersController {
@Post('/', bodyContract(CreateBody, { tags: ['characters'], summary: 'Create' }))
async create() { /* ... */ }
}bodyContract() sets middlewares.pre (Zod validation) and apiDoc (ApiDocFragment for @soapjs/soap-openapi).
Peer dependencies
@soapjs/soap>= 0.14.0zod>= 4.4.3express>= 4 (middleware only)
