UNPKG

express-openapi-validate

Version:

Express middleware to validate request based on an OpenAPI 3 document

548 lines (546 loc) 12.4 kB
openapi: 3.0.3 info: title: Example API version: 1.0.0 components: schemas: Test: type: object properties: value: type: number required: - value Tag: type: string minLength: 3 maxLength: 10 pattern: "^[a-zA-Z]+$" Error: type: object properties: error: type: object properties: name: type: string message: type: string data: type: array items: type: object required: - name - message - data required: - error Reffy: type: object properties: tag: $ref: "#/components/schemas/Tag" value: type: string minLength: 1 required: - value parameters: hello: name: hello in: query required: true schema: type: string minLength: 1 RequestIdHeader: name: x-request-id in: header required: true schema: type: string minLength: 1 pattern: "^[0-9]+$" responses: Error: description: Error response content: application/json: schema: $ref: "#/components/schemas/Error" requestBodies: pong: required: true content: application/json: schema: type: object properties: ping: type: string enum: - pong additionalProperties: false required: - ping headers: hullo: schema: type: string minLength: 2 paths: /echo: post: description: Echo input back requestBody: content: application/json: schema: type: object properties: input: type: string required: - input responses: "200": description: Response content: application/json: schema: type: object properties: output: type: string required: - output default: $ref: "#/components/responses/Error" /match: post: description: Echo input back requestBody: content: application/json: schema: type: object properties: input: type: string required: - input responses: "200": description: Response content: application/json: schema: type: object properties: output: type: string required: - output default: $ref: "#/components/responses/Error" /match/{optional}: post: description: Echo url-param back requestBody: content: application/json: schema: type: object properties: input: type: string required: - input parameters: - name: optional in: path required: true schema: type: string responses: "200": description: Response content: application/json: schema: type: object properties: output: type: string required: - output default: $ref: "#/components/responses/Error" /internal-ref: post: responses: "200": description: Response requestBody: content: application/json: schema: "$ref": "#/components/schemas/Test" /parameters: get: parameters: - name: param in: query required: true schema: type: string - name: porom in: query schema: type: string responses: "200": description: Response /parameters/required: get: parameters: - name: q1 in: query required: true schema: type: string minLength: 1 - name: q2 in: query required: true schema: type: string minLength: 1 responses: 200: description: Response /parameters/header: get: parameters: - name: x-param in: header required: true schema: type: string responses: "200": description: Response /parameters/header/caseinsensitive: get: parameters: - name: X-Param in: header required: true schema: type: string responses: "200": description: Response /parameters/cookie: get: parameters: - name: session in: cookie required: true schema: type: string minLength: 1 responses: "200": description: Response /parameters/id/{id}: get: parameters: - name: id in: path required: true schema: type: string pattern: "^[0-9]+$" responses: "200": description: Response /parameters/all-operations-id/{pid}: parameters: - name: pid in: path required: true schema: type: string pattern: "^[0-9]+$" get: responses: "200": description: Response /parameters/both-all-operations-id/{pid}/{id}: parameters: - name: pid in: path required: true schema: type: string pattern: "^[0-9]+$" get: parameters: - name: id in: path required: true schema: type: string pattern: "^[0-9]+$" responses: "200": description: Response /parameters/override/{pid}: parameters: - name: pid in: path required: true schema: type: string pattern: "^[^0-9]+$" get: parameters: - name: pid in: path required: true schema: type: string pattern: "^[0-9]+$" responses: "200": description: Response /parameters/with-refs: get: parameters: - $ref: "#/components/parameters/RequestIdHeader" responses: "200": description: Response /nullable: post: requestBody: content: application/json: schema: type: object properties: bar: type: string baz: type: string nullable: true responses: "200": description: Response /ref-parameter: get: parameters: - $ref: "#/components/parameters/hello" responses: "200": description: Response /different-rules: post: parameters: - name: q1 in: query schema: $ref: "#/components/schemas/Tag" requestBody: content: application/json: schema: type: object properties: i: type: integer multipleOf: 2 minimum: 2 maximum: 256 responses: "200": description: Response /required-body: post: requestBody: required: true content: application/json: schema: type: object properties: a: type: string required: - a responses: "200": description: Response /format: post: requestBody: required: true content: application/json: schema: type: object properties: i32: type: integer format: int32 i64: type: integer format: int64 f: type: number format: float d: type: number format: double byte: type: string format: byte binary: type: string format: binary password: type: string format: password date: type: string format: date responses: "200": description: Response /responses: post: responses: 2XX: description: Generic 2xx response "201": description: Created response content: application/json: schema: type: object properties: hello: type: string required: - hello default: description: Default response /responses/no-default: get: responses: "200": description: Response /responses/header: post: responses: default: description: Default response headers: X-HEADER: required: true schema: type: string X-Ref-Header: schema: $ref: "#/components/schemas/Tag" content-type: required: true schema: type: string x-empty: description: Empty header value content: application/json: schema: {} /responses/header2: post: responses: "200": description: Response headers: X-1: required: true schema: type: string x-2: required: true schema: type: string /schema-references: post: requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Reffy" responses: "200": description: Response /more-references: post: requestBody: $ref: "#/components/requestBodies/pong" responses: "200": description: Response headers: x-hullo: $ref: "#/components/headers/hullo" /extra-oas-fields-in-schema: post: requestBody: required: true content: application/json: schema: type: string example: abc readOnly: true writeOnly: false xml: {} externalDocs: {} deprecated: false responses: "200": description: Response /discriminator: post: requestBody: content: application/json: schema: type: object discriminator: propertyName: foo required: - foo oneOf: - properties: foo: const: x a: type: string required: - a - properties: foo: enum: - y - z b: type: string required: - b