四好公路
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1343 lines
30 KiB

{
"$id": "https://spec.openapis.org/oas/3.1/schema/2021-04-15",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"openapi": {
"type": "string",
"pattern": "^3\\.1\\.\\d+(-.+)?$"
},
"info": {
"$ref": "#/$defs/info"
},
"jsonSchemaDialect": {
"$ref": "#/$defs/uri",
"default": "https://spec.openapis.org/oas/3.1/dialect/base"
},
"servers": {
"type": "array",
"items": {
"$ref": "#/$defs/server"
}
},
"paths": {
"$ref": "#/$defs/paths"
},
"webhooks": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/path-item-or-reference"
}
},
"components": {
"$ref": "#/$defs/components"
},
"security": {
"type": "array",
"items": {
"$ref": "#/$defs/security-requirement"
}
},
"tags": {
"type": "array",
"items": {
"$ref": "#/$defs/tag"
}
},
"externalDocs": {
"$ref": "#/$defs/external-documentation"
}
},
"required": [
"openapi",
"info"
],
"anyOf": [
{
"required": [
"paths"
]
},
{
"required": [
"components"
]
},
{
"required": [
"webhooks"
]
}
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false,
"$defs": {
"info": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"termsOfService": {
"type": "string"
},
"contact": {
"$ref": "#/$defs/contact"
},
"license": {
"$ref": "#/$defs/license"
},
"version": {
"type": "string"
}
},
"required": [
"title",
"version"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"contact": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"email": {
"type": "string"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"license": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"identifier": {
"type": "string"
},
"url": {
"$ref": "#/$defs/uri"
}
},
"required": [
"name"
],
"oneOf": [
{
"required": [
"identifier"
]
},
{
"required": [
"url"
]
}
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"server": {
"type": "object",
"properties": {
"url": {
"$ref": "#/$defs/uri"
},
"description": {
"type": "string"
},
"variables": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/server-variable"
}
}
},
"required": [
"url"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"server-variable": {
"type": "object",
"properties": {
"enum": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"default": {
"type": "string"
},
"descriptions": {
"type": "string"
}
},
"required": [
"default"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"components": {
"type": "object",
"properties": {
"schemas": {
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
}
},
"responses": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/response-or-reference"
}
},
"parameters": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/parameter-or-reference"
}
},
"examples": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/example-or-reference"
}
},
"requestBodies": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/request-body-or-reference"
}
},
"headers": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/header-or-reference"
}
},
"securitySchemes": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/security-scheme-or-reference"
}
},
"links": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/link-or-reference"
}
},
"callbacks": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/callbacks-or-reference"
}
},
"pathItems": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/path-item-or-reference"
}
}
},
"patternProperties": {
"^(schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems)$": {
"$comment": "Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected",
"propertyNames": {
"pattern": "^[a-zA-Z0-9._-]+$"
}
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"paths": {
"type": "object",
"patternProperties": {
"^/": {
"$ref": "#/$defs/path-item"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"path-item": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"servers": {
"type": "array",
"items": {
"$ref": "#/$defs/server"
}
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/$defs/parameter-or-reference"
}
}
},
"patternProperties": {
"^(get|put|post|delete|options|head|patch|trace)$": {
"$ref": "#/$defs/operation"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"path-item-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/path-item"
}
},
"operation": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"externalDocs": {
"$ref": "#/$defs/external-documentation"
},
"operationId": {
"type": "string"
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/$defs/parameter-or-reference"
}
},
"requestBody": {
"$ref": "#/$defs/request-body-or-reference"
},
"responses": {
"$ref": "#/$defs/responses"
},
"callbacks": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/callbacks-or-reference"
}
},
"deprecated": {
"default": false,
"type": "boolean"
},
"security": {
"type": "array",
"items": {
"$ref": "#/$defs/security-requirement"
}
},
"servers": {
"type": "array",
"items": {
"$ref": "#/$defs/server"
}
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"external-documentation": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"url": {
"$ref": "#/$defs/uri"
}
},
"required": [
"url"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"parameter": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"in": {
"enum": [
"query",
"header",
"path",
"cookie"
]
},
"description": {
"type": "string"
},
"required": {
"default": false,
"type": "boolean"
},
"deprecated": {
"default": false,
"type": "boolean"
},
"allowEmptyValue": {
"default": false,
"type": "boolean"
},
"schema": {
"$dynamicRef": "#meta"
},
"content": {
"$ref": "#/$defs/content"
}
},
"required": [
"in"
],
"oneOf": [
{
"required": [
"schema"
]
},
{
"required": [
"content"
]
}
],
"dependentSchemas": {
"schema": {
"properties": {
"style": {
"type": "string"
},
"explode": {
"type": "boolean"
},
"allowReserved": {
"default": false,
"type": "boolean"
}
},
"allOf": [
{
"$ref": "#/$defs/examples"
},
{
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path"
},
{
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-header"
},
{
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-query"
},
{
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-cookie"
},
{
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-form"
}
],
"$defs": {
"styles-for-path": {
"if": {
"properties": {
"in": {
"const": "path"
}
},
"required": [
"in"
]
},
"then": {
"properties": {
"style": {
"default": "simple",
"enum": [
"matrix",
"label",
"simple"
]
},
"required": {
"const": true
}
},
"required": [
"required"
]
}
},
"styles-for-header": {
"if": {
"properties": {
"in": {
"const": "header"
}
},
"required": [
"in"
]
},
"then": {
"properties": {
"style": {
"default": "simple",
"enum": [
"simple"
]
}
}
}
},
"styles-for-query": {
"if": {
"properties": {
"in": {
"const": "query"
}
},
"required": [
"in"
]
},
"then": {
"properties": {
"style": {
"default": "form",
"enum": [
"form",
"spaceDelimited",
"pipeDelimited",
"deepObject"
]
}
}
}
},
"styles-for-cookie": {
"if": {
"properties": {
"in": {
"const": "cookie"
}
},
"required": [
"in"
]
},
"then": {
"properties": {
"style": {
"default": "form",
"enum": [
"form"
]
}
}
}
},
"styles-for-form": {
"if": {
"properties": {
"style": {
"const": "form"
}
},
"required": [
"style"
]
},
"then": {
"properties": {
"explode": {
"default": true
}
}
},
"else": {
"properties": {
"explode": {
"default": false
}
}
}
}
}
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"parameter-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/parameter"
}
},
"request-body": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"content": {
"$ref": "#/$defs/content"
},
"required": {
"default": false,
"type": "boolean"
}
},
"required": [
"content"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"request-body-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/request-body"
}
},
"content": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/media-type"
},
"propertyNames": {
"format": "media-range"
}
},
"media-type": {
"type": "object",
"properties": {
"schema": {
"$dynamicRef": "#meta"
},
"encoding": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/encoding"
}
}
},
"allOf": [
{
"$ref": "#/$defs/specification-extensions"
},
{
"$ref": "#/$defs/examples"
}
],
"unevaluatedProperties": false
},
"encoding": {
"type": "object",
"properties": {
"contentType": {
"type": "string",
"format": "media-range"
},
"headers": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/header-or-reference"
}
},
"style": {
"default": "form",
"enum": [
"form",
"spaceDelimited",
"pipeDelimited",
"deepObject"
]
},
"explode": {
"type": "boolean"
},
"allowReserved": {
"default": false,
"type": "boolean"
}
},
"allOf": [
{
"$ref": "#/$defs/specification-extensions"
},
{
"$ref": "#/$defs/encoding/$defs/explode-default"
}
],
"unevaluatedProperties": false,
"$defs": {
"explode-default": {
"if": {
"properties": {
"style": {
"const": "form"
}
},
"required": [
"style"
]
},
"then": {
"properties": {
"explode": {
"default": true
}
}
},
"else": {
"properties": {
"explode": {
"default": false
}
}
}
}
}
},
"responses": {
"type": "object",
"properties": {
"default": {
"$ref": "#/$defs/response-or-reference"
}
},
"patternProperties": {
"^[1-5][0-9X]{2}$": {
"$ref": "#/$defs/response-or-reference"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"response": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"headers": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/header-or-reference"
}
},
"content": {
"$ref": "#/$defs/content"
},
"links": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/link-or-reference"
}
}
},
"required": [
"description"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"response-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/response"
}
},
"callbacks": {
"type": "object",
"$ref": "#/$defs/specification-extensions",
"additionalProperties": {
"$ref": "#/$defs/path-item-or-reference"
}
},
"callbacks-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/callbacks"
}
},
"example": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"value": true,
"externalValue": {
"$ref": "#/$defs/uri"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"example-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/example"
}
},
"link": {
"type": "object",
"properties": {
"operationRef": {
"$ref": "#/$defs/uri"
},
"operationId": true,
"parameters": {
"$ref": "#/$defs/map-of-strings"
},
"requestBody": true,
"description": {
"type": "string"
},
"body": {
"$ref": "#/$defs/server"
}
},
"oneOf": [
{
"required": [
"operationRef"
]
},
{
"required": [
"operationId"
]
}
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"link-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/link"
}
},
"header": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"required": {
"default": false,
"type": "boolean"
},
"deprecated": {
"default": false,
"type": "boolean"
},
"allowEmptyValue": {
"default": false,
"type": "boolean"
}
},
"dependentSchemas": {
"schema": {
"properties": {
"style": {
"default": "simple",
"enum": [
"simple"
]
},
"explode": {
"default": false,
"type": "boolean"
},
"allowReserved": {
"default": false,
"type": "boolean"
},
"schema": {
"$dynamicRef": "#meta"
}
},
"$ref": "#/$defs/examples"
},
"content": {
"properties": {
"content": {
"$ref": "#/$defs/content"
}
}
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"header-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/header"
}
},
"tag": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"externalDocs": {
"$ref": "#/$defs/external-documentation"
}
},
"required": [
"name"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"reference": {
"type": "object",
"properties": {
"$ref": {
"$ref": "#/$defs/uri"
},
"summary": {
"type": "string"
},
"description": {
"type": "string"
}
},
"unevaluatedProperties": false
},
"schema": {
"$dynamicAnchor": "meta",
"type": [
"object",
"boolean"
]
},
"security-scheme": {
"type": "object",
"properties": {
"type": {
"enum": [
"apiKey",
"http",
"mutualTLS",
"oauth2",
"openIdConnect"
]
},
"description": {
"type": "string"
}
},
"required": [
"type"
],
"allOf": [
{
"$ref": "#/$defs/specification-extensions"
},
{
"$ref": "#/$defs/security-scheme/$defs/type-apikey"
},
{
"$ref": "#/$defs/security-scheme/$defs/type-http"
},
{
"$ref": "#/$defs/security-scheme/$defs/type-http-bearer"
},
{
"$ref": "#/$defs/security-scheme/$defs/type-oauth2"
},
{
"$ref": "#/$defs/security-scheme/$defs/type-oidc"
}
],
"unevaluatedProperties": false,
"$defs": {
"type-apikey": {
"if": {
"properties": {
"type": {
"const": "apiKey"
}
},
"required": [
"type"
]
},
"then": {
"properties": {
"name": {
"type": "string"
},
"in": {
"enum": [
"query",
"header",
"cookie"
]
}
},
"required": [
"name",
"in"
]
}
},
"type-http": {
"if": {
"properties": {
"type": {
"const": "http"
}
},
"required": [
"type"
]
},
"then": {
"properties": {
"scheme": {
"type": "string"
}
},
"required": [
"scheme"
]
}
},
"type-http-bearer": {
"if": {
"properties": {
"type": {
"const": "http"
},
"scheme": {
"const": "bearer"
}
},
"required": [
"type",
"scheme"
]
},
"then": {
"properties": {
"bearerFormat": {
"type": "string"
}
},
"required": [
"scheme"
]
}
},
"type-oauth2": {
"if": {
"properties": {
"type": {
"const": "oauth2"
}
},
"required": [
"type"
]
},
"then": {
"properties": {
"flows": {
"$ref": "#/$defs/oauth-flows"
}
},
"required": [
"flows"
]
}
},
"type-oidc": {
"if": {
"properties": {
"type": {
"const": "openIdConnect"
}
},
"required": [
"type"
]
},
"then": {
"properties": {
"openIdConnectUrl": {
"$ref": "#/$defs/uri"
}
},
"required": [
"openIdConnectUrl"
]
}
}
}
},
"security-scheme-or-reference": {
"if": {
"required": [
"$ref"
]
},
"then": {
"$ref": "#/$defs/reference"
},
"else": {
"$ref": "#/$defs/security-scheme"
}
},
"oauth-flows": {
"type": "object",
"properties": {
"implicit": {
"$ref": "#/$defs/oauth-flows/$defs/implicit"
},
"password": {
"$ref": "#/$defs/oauth-flows/$defs/password"
},
"clientCredentials": {
"$ref": "#/$defs/oauth-flows/$defs/client-credentials"
},
"authorizationCode": {
"$ref": "#/$defs/oauth-flows/$defs/authorization-code"
}
},
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false,
"$defs": {
"implicit": {
"type": "object",
"properties": {
"authorizationUrl": {
"type": "string"
},
"refreshUrl": {
"type": "string"
},
"scopes": {
"$ref": "#/$defs/map-of-strings"
}
},
"required": [
"authorizationUrl",
"scopes"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"password": {
"type": "object",
"properties": {
"tokenUrl": {
"type": "string"
},
"refreshUrl": {
"type": "string"
},
"scopes": {
"$ref": "#/$defs/map-of-strings"
}
},
"required": [
"tokenUrl",
"scopes"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"client-credentials": {
"type": "object",
"properties": {
"tokenUrl": {
"type": "string"
},
"refreshUrl": {
"type": "string"
},
"scopes": {
"$ref": "#/$defs/map-of-strings"
}
},
"required": [
"tokenUrl",
"scopes"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
},
"authorization-code": {
"type": "object",
"properties": {
"authorizationUrl": {
"type": "string"
},
"tokenUrl": {
"type": "string"
},
"refreshUrl": {
"type": "string"
},
"scopes": {
"$ref": "#/$defs/map-of-strings"
}
},
"required": [
"authorizationUrl",
"tokenUrl",
"scopes"
],
"$ref": "#/$defs/specification-extensions",
"unevaluatedProperties": false
}
}
},
"security-requirement": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"specification-extensions": {
"patternProperties": {
"^x-": true
}
},
"examples": {
"properties": {
"example": true,
"examples": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/example-or-reference"
}
}
}
},
"uri": {
"type": "string",
"format": "uri"
},
"map-of-strings": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}