express-openapi-validate
Version:
Express middleware to validate request based on an OpenAPI 3 document
548 lines (546 loc) • 12.4 kB
YAML
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