UNPKG

@tsed/schema

Version:
56 lines (55 loc) 1.77 kB
import { toJsonMapCollection } from "../utils/toJsonMapCollection.js"; import { JsonMap } from "./JsonMap.js"; /** * Represents an HTTP request body definition for OpenAPI specifications. * * JsonRequestBody defines the structure and content types accepted by an HTTP * operation's request body. It provides a fluent API for specifying request * body schemas, media types, and examples. * * ### Usage * * ```typescript * const requestBody = new JsonRequestBody() * .description("User creation payload") * .addContent("application/json", userSchema, { * example1: {name: "John", email: "john@example.com"} * }); * ``` * * ### Key Features * * - **Content Types**: Support for multiple media types (JSON, XML, form data, etc.) * - **Schema Integration**: JSON schemas for request validation * - **Examples**: Request body examples for documentation * - **Required Flag**: Mark request body as required or optional * * @public */ export class JsonRequestBody extends JsonMap { constructor(obj = {}) { super(obj); this.$kind = "operationRequestBody"; this.content(obj.content || {}); } description(description) { this.set("description", description); return this; } content(content) { this.set("content", toJsonMapCollection(content)); return this; } addContent(mediaType, schema, examples) { const content = this.get("content"); const mediaContent = new JsonMap(); mediaContent.set("schema", schema); examples && mediaContent.set("examples", examples); content.set(mediaType, mediaContent); return this; } required(required) { this.set("required", required); return this; } }