@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
56 lines (55 loc) • 1.77 kB
JavaScript
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;
}
}