@asyncapi/specs
Version:
AsyncAPI schema versions
1,318 lines • 88.3 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema",
"title": "AsyncAPI 2.2.0 schema.",
"type": "object",
"required": [
"asyncapi",
"info",
"channels"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"asyncapi": {
"type": "string",
"enum": [
"2.2.0"
],
"description": "The AsyncAPI specification version of this document."
},
"id": {
"type": "string",
"description": "A unique id representing the application.",
"format": "uri"
},
"info": {
"$ref": "#/definitions/info"
},
"servers": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/server"
}
},
"defaultContentType": {
"type": "string"
},
"channels": {
"$ref": "#/definitions/channels"
},
"components": {
"$ref": "#/definitions/components"
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/tag"
},
"uniqueItems": true
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
}
},
"definitions": {
"specificationExtension": {
"description": "Any property starting with x- is valid.",
"additionalProperties": true,
"additionalItems": true
},
"info": {
"type": "object",
"description": "General information about the API.",
"required": [
"version",
"title"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"title": {
"type": "string",
"description": "A unique and precise title of the API."
},
"version": {
"type": "string",
"description": "A semantic version number of the API."
},
"description": {
"type": "string",
"description": "A longer description of the API. Should be different from the title. CommonMark is allowed."
},
"termsOfService": {
"type": "string",
"description": "A URL to the Terms of Service for the API. MUST be in the format of a URL.",
"format": "uri"
},
"contact": {
"$ref": "#/definitions/contact"
},
"license": {
"$ref": "#/definitions/license"
}
}
},
"contact": {
"type": "object",
"description": "Contact information for the owners of the API.",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "The identifying name of the contact person/organization."
},
"url": {
"type": "string",
"description": "The URL pointing to the contact information.",
"format": "uri"
},
"email": {
"type": "string",
"description": "The email address of the contact person/organization.",
"format": "email"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
}
},
"license": {
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "The name of the license type. It's encouraged to use an OSI compatible license."
},
"url": {
"type": "string",
"description": "The URL pointing to the license.",
"format": "uri"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
}
},
"server": {
"type": "object",
"description": "An object representing a Server.",
"required": [
"url",
"protocol"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"url": {
"type": "string"
},
"description": {
"type": "string"
},
"protocol": {
"type": "string",
"description": "The transfer protocol."
},
"protocolVersion": {
"type": "string"
},
"variables": {
"$ref": "#/definitions/serverVariables"
},
"security": {
"type": "array",
"items": {
"$ref": "#/definitions/SecurityRequirement"
}
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
}
}
},
"serverVariables": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/serverVariable"
}
},
"serverVariable": {
"type": "object",
"description": "An object representing a Server Variable for server URL template substitution.",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"enum": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"default": {
"type": "string"
},
"description": {
"type": "string"
},
"examples": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"SecurityRequirement": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
}
},
"bindingsObject": {
"type": "object",
"additionalProperties": true,
"properties": {
"http": {},
"ws": {},
"amqp": {},
"amqp1": {},
"mqtt": {},
"mqtt5": {},
"kafka": {},
"anypointmq": {},
"nats": {},
"jms": {},
"sns": {},
"sqs": {},
"stomp": {},
"redis": {},
"ibmmq": {}
}
},
"channels": {
"type": "object",
"propertyNames": {
"type": "string",
"format": "uri-template",
"minLength": 1
},
"additionalProperties": {
"$ref": "#/definitions/channelItem"
}
},
"channelItem": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"$ref": {
"$ref": "#/definitions/ReferenceObject"
},
"parameters": {
"$ref": "#/definitions/parameters"
},
"description": {
"type": "string",
"description": "A description of the channel."
},
"servers": {
"type": "array",
"description": "The names of the servers on which this channel is available. If absent or empty then this channel must be available on all servers.",
"items": {
"type": "string"
},
"uniqueItems": true
},
"publish": {
"$ref": "#/definitions/operation"
},
"subscribe": {
"$ref": "#/definitions/operation"
},
"deprecated": {
"type": "boolean",
"default": false
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
}
}
},
"ReferenceObject": {
"type": "string",
"format": "uri-reference"
},
"parameters": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"$ref": "#/definitions/parameter"
}
]
},
"description": "JSON objects describing re-usable channel parameters."
},
"Reference": {
"type": "object",
"required": [
"$ref"
],
"properties": {
"$ref": {
"$ref": "#/definitions/ReferenceObject"
}
}
},
"parameter": {
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"description": {
"type": "string",
"description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
},
"schema": {
"$ref": "#/definitions/schema"
},
"location": {
"type": "string",
"description": "A runtime expression that specifies the location of the parameter value",
"pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
},
"$ref": {
"$ref": "#/definitions/ReferenceObject"
}
}
},
"schema": {
"allOf": [
{
"$ref": "#/definitions/json-schema-draft-07-schema"
},
{
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/schema"
},
{
"type": "boolean"
}
],
"default": {}
},
"items": {
"anyOf": [
{
"$ref": "#/definitions/schema"
},
{
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/schema"
}
}
],
"default": {}
},
"allOf": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/schema"
}
},
"oneOf": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/schema"
}
},
"anyOf": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/schema"
}
},
"not": {
"$ref": "#/definitions/schema"
},
"properties": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/schema"
},
"default": {}
},
"patternProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/schema"
},
"default": {}
},
"propertyNames": {
"$ref": "#/definitions/schema"
},
"contains": {
"$ref": "#/definitions/schema"
},
"discriminator": {
"type": "string"
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
"deprecated": {
"type": "boolean",
"default": false
}
}
}
]
},
"json-schema-draft-07-schema": {
"title": "Core schema meta-schema",
"definitions": {
"schemaArray": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/json-schema-draft-07-schema"
}
},
"nonNegativeInteger": {
"type": "integer",
"minimum": 0
},
"nonNegativeIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeInteger"
},
{
"default": 0
}
]
},
"simpleTypes": {
"enum": [
"array",
"boolean",
"integer",
"null",
"number",
"object",
"string"
]
},
"stringArray": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"default": []
}
},
"type": [
"object",
"boolean"
],
"properties": {
"$id": {
"type": "string",
"format": "uri-reference"
},
"$schema": {
"type": "string",
"format": "uri"
},
"$ref": {
"type": "string",
"format": "uri-reference"
},
"$comment": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"default": true,
"readOnly": {
"type": "boolean",
"default": false
},
"writeOnly": {
"type": "boolean",
"default": false
},
"examples": {
"type": "array",
"items": true
},
"multipleOf": {
"type": "number",
"exclusiveMinimum": 0
},
"maximum": {
"type": "number"
},
"exclusiveMaximum": {
"type": "number"
},
"minimum": {
"type": "number"
},
"exclusiveMinimum": {
"type": "number"
},
"maxLength": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeInteger"
},
"minLength": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeIntegerDefault0"
},
"pattern": {
"type": "string",
"format": "regex"
},
"additionalItems": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"items": {
"anyOf": [
{
"$ref": "#/definitions/json-schema-draft-07-schema"
},
{
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/schemaArray"
}
],
"default": true
},
"maxItems": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeInteger"
},
"minItems": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeIntegerDefault0"
},
"uniqueItems": {
"type": "boolean",
"default": false
},
"contains": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"maxProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeInteger"
},
"minProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/nonNegativeIntegerDefault0"
},
"required": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/stringArray"
},
"additionalProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"definitions": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"default": {}
},
"properties": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"default": {}
},
"patternProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"propertyNames": {
"format": "regex"
},
"default": {}
},
"dependencies": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/json-schema-draft-07-schema"
},
{
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/stringArray"
}
]
}
},
"propertyNames": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"const": true,
"enum": {
"type": "array",
"items": true,
"minItems": 1,
"uniqueItems": true
},
"type": {
"anyOf": [
{
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/simpleTypes"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/simpleTypes"
},
"minItems": 1,
"uniqueItems": true
}
]
},
"format": {
"type": "string"
},
"contentMediaType": {
"type": "string"
},
"contentEncoding": {
"type": "string"
},
"if": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"then": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"else": {
"$ref": "#/definitions/json-schema-draft-07-schema"
},
"allOf": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/schemaArray"
},
"anyOf": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/schemaArray"
},
"oneOf": {
"$ref": "#/definitions/json-schema-draft-07-schema/definitions/schemaArray"
},
"not": {
"$ref": "#/definitions/json-schema-draft-07-schema"
}
},
"default": true
},
"externalDocs": {
"type": "object",
"additionalProperties": false,
"description": "information about external documentation",
"required": [
"url"
],
"properties": {
"description": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
}
},
"operation": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"traits": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"$ref": "#/definitions/operationTrait"
}
]
}
},
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/tag"
},
"uniqueItems": true
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
"operationId": {
"type": "string"
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
},
"message": {
"$ref": "#/definitions/message"
}
}
},
"operationTrait": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/tag"
},
"uniqueItems": true
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
"operationId": {
"type": "string"
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
}
}
},
"tag": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
}
},
"message": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"oneOf": [
{
"type": "object",
"required": [
"oneOf"
],
"additionalProperties": false,
"properties": {
"oneOf": {
"type": "array",
"items": {
"$ref": "#/definitions/message"
}
}
}
},
{
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"schemaFormat": {
"type": "string"
},
"contentType": {
"type": "string"
},
"headers": {
"allOf": [
{
"$ref": "#/definitions/schema"
},
{
"properties": {
"type": {
"const": "object"
}
}
}
]
},
"payload": {},
"correlationId": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"$ref": "#/definitions/correlationId"
}
]
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/tag"
},
"uniqueItems": true
},
"summary": {
"type": "string",
"description": "A brief summary of the message."
},
"name": {
"type": "string",
"description": "Name of the message."
},
"title": {
"type": "string",
"description": "A human-friendly title for the message."
},
"description": {
"type": "string",
"description": "A longer description of the message. CommonMark is allowed."
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
"deprecated": {
"type": "boolean",
"default": false
},
"examples": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"anyOf": [
{
"required": [
"payload"
]
},
{
"required": [
"headers"
]
}
],
"properties": {
"name": {
"type": "string",
"description": "Machine readable name of the message example."
},
"summary": {
"type": "string",
"description": "A brief summary of the message example."
},
"headers": {
"type": "object"
},
"payload": {}
}
}
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
},
"traits": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"$ref": "#/definitions/messageTrait"
}
]
}
}
},
"allOf": [
{
"if": {
"not": {
"required": [
"schemaFormat"
]
}
},
"then": {
"properties": {
"payload": {
"$ref": "#/definitions/schema"
}
}
}
},
{
"if": {
"required": [
"schemaFormat"
],
"properties": {
"schemaFormat": {
"enum": [
"application/vnd.aai.asyncapi;version=2.0.0",
"application/vnd.aai.asyncapi+json;version=2.0.0",
"application/vnd.aai.asyncapi+yaml;version=2.0.0",
"application/vnd.aai.asyncapi;version=2.1.0",
"application/vnd.aai.asyncapi+json;version=2.1.0",
"application/vnd.aai.asyncapi+yaml;version=2.1.0",
"application/vnd.aai.asyncapi;version=2.2.0",
"application/vnd.aai.asyncapi+json;version=2.2.0",
"application/vnd.aai.asyncapi+yaml;version=2.2.0"
]
}
}
},
"then": {
"properties": {
"payload": {
"$ref": "#/definitions/schema"
}
}
}
},
{
"if": {
"required": [
"schemaFormat"
],
"properties": {
"schemaFormat": {
"enum": [
"application/schema+json;version=draft-07",
"application/schema+yaml;version=draft-07"
]
}
}
},
"then": {
"properties": {
"payload": {
"$ref": "#/definitions/json-schema-draft-07-schema"
}
}
}
},
{
"if": {
"required": [
"schemaFormat"
],
"properties": {
"schemaFormat": {
"enum": [
"application/vnd.oai.openapi;version=3.0.0",
"application/vnd.oai.openapi+json;version=3.0.0",
"application/vnd.oai.openapi+yaml;version=3.0.0"
]
}
}
},
"then": {
"properties": {
"payload": {
"$ref": "#/definitions/openapiSchema_3_0"
}
}
}
},
{
"if": {
"required": [
"schemaFormat"
],
"properties": {
"schemaFormat": {
"enum": [
"application/vnd.apache.avro;version=1.9.0",
"application/vnd.apache.avro+json;version=1.9.0",
"application/vnd.apache.avro+yaml;version=1.9.0"
]
}
}
},
"then": {
"properties": {
"payload": {
"$ref": "#/definitions/avroSchema_v1"
}
}
}
}
]
}
]
}
]
},
"correlationId": {
"type": "object",
"required": [
"location"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"description": {
"type": "string",
"description": "A optional description of the correlation ID. GitHub Flavored Markdown is allowed."
},
"location": {
"type": "string",
"description": "A runtime expression that specifies the location of the correlation ID",
"pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
}
}
},
"messageTrait": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "#/definitions/specificationExtension"
}
},
"properties": {
"schemaFormat": {
"type": "string"
},
"contentType": {
"type": "string"
},
"headers": {
"allOf": [
{
"$ref": "#/definitions/schema"
},
{
"properties": {
"type": {
"const": "object"
}
}
}
]
},
"correlationId": {
"oneOf": [
{
"$ref": "#/definitions/Reference"
},
{
"$ref": "#/definitions/correlationId"
}
]
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/tag"
},
"uniqueItems": true
},
"summary": {
"type": "string",
"description": "A brief summary of the message."
},
"name": {
"type": "string",
"description": "Name of the message."
},
"title": {
"type": "string",
"description": "A human-friendly title for the message."
},
"description": {
"type": "string",
"description": "A longer description of the message. CommonMark is allowed."
},
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
"deprecated": {
"type": "boolean",
"default": false
},
"examples": {
"type": "array",
"items": {
"type": "object"
}
},
"bindings": {
"$ref": "#/definitions/bindingsObject"
}
}
},
"openapiSchema_3_0": {
"type": "object",
"definitions": {
"ExternalDocumentation": {
"type": "object",
"required": [
"url"
],
"properties": {
"description": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri-reference"
}
},
"patternProperties": {
"^x-": {}
},
"additionalProperties": false
},
"Discriminator": {
"type": "object",
"required": [
"propertyName"
],
"properties": {
"propertyName": {
"type": "string"
},
"mapping": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"Reference": {
"type": "object",
"required": [
"$ref"
],
"patternProperties": {
"^\\$ref$": {
"type": "string",
"format": "uri-reference"
}
}
},
"XML": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"namespace": {
"type": "string",
"format": "uri"
},
"prefix": {
"type": "string"
},
"attribute": {
"type": "boolean",
"default": false
},
"wrapped": {
"type": "boolean",
"default": false
}
},
"patternProperties": {
"^x-": {}
},
"additionalProperties": false
}
},
"properties": {
"title": {
"type": "string"
},
"multipleOf": {
"type": "number",
"exclusiveMinimum": 0
},
"maximum": {
"type": "number"
},
"exclusiveMaximum": {
"type": "boolean",
"default": false
},
"minimum": {
"type": "number"
},
"exclusiveMinimum": {
"type": "boolean",
"default": false
},
"maxLength": {
"type": "integer",
"minimum": 0
},
"minLength": {
"type": "integer",
"minimum": 0,
"default": 0
},
"pattern": {
"type": "string",
"format": "regex"
},
"maxItems": {
"type": "integer",
"minimum": 0
},
"minItems": {
"type