{
    "id": "http://asyncapi.com/definitions/1.0.0/asyncapi.json",
    "$schema": "http://json-schema.org/draft-04/schema",
    "title": "AsyncAPI 1.0 schema.",
    "type": "object",
    "required": [
        "asyncapi",
        "info",
        "topics"
    ],
    "additionalProperties": false,
    "patternProperties": {
        "^x-": {
            "$ref": "#/definitions/vendorExtension"
        }
    },
    "properties": {
        "asyncapi": {
            "type": "string",
            "enum": [
                "1.0.0"
            ],
            "description": "The AsyncAPI specification version of this document."
        },
        "info": {
            "$ref": "#/definitions/info"
        },
        "baseTopic": {
            "type": "string",
            "pattern": "^[^/.]",
            "description": "The base topic to the API. Example: 'hitch'.",
            "default": ""
        },
        "servers": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/server"
            },
            "uniqueItems": true
        },
        "topics": {
            "$ref": "#/definitions/topics"
        },
        "components": {
            "$ref": "#/definitions/components"
        },
        "tags": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/tag"
            },
            "uniqueItems": true
        },
        "security": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/SecurityRequirement"
            }
        },
        "externalDocs": {
            "$ref": "#/definitions/externalDocs"
        }
    },
    "definitions": {
        "vendorExtension": {
            "id": "http://asyncapi.com/definitions/1.0.0/vendorExtension.json",
            "description": "Any property starting with x- is valid.",
            "additionalProperties": true,
            "additionalItems": true
        },
        "info": {
            "id": "http://asyncapi.com/definitions/1.0.0/info.json",
            "type": "object",
            "description": "General information about the API.",
            "required": [
                "version",
                "title"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "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": {
            "id": "http://asyncapi.com/definitions/1.0.0/contact.json",
            "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-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "license": {
            "id": "http://asyncapi.com/definitions/1.0.0/license.json",
            "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-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "server": {
            "id": "http://asyncapi.com/definitions/1.0.0/server.json",
            "type": "object",
            "description": "An object representing a Server.",
            "required": [
                "url",
                "scheme"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "url": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "scheme": {
                    "type": "string",
                    "description": "The transfer protocol.",
                    "enum": [
                        "kafka",
                        "kafka-secure",
                        "amqp",
                        "amqps",
                        "mqtt",
                        "mqtts",
                        "secure-mqtt",
                        "ws",
                        "wss",
                        "stomp",
                        "stomps"
                    ]
                },
                "schemeVersion": {
                    "type": "string"
                },
                "variables": {
                    "$ref": "#/definitions/serverVariables"
                }
            }
        },
        "serverVariables": {
            "id": "http://asyncapi.com/definitions/1.0.0/serverVariables.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/serverVariable"
            }
        },
        "serverVariable": {
            "id": "http://asyncapi.com/definitions/1.0.0/serverVariable.json",
            "type": "object",
            "description": "An object representing a Server Variable for server URL template substitution.",
            "minProperties": 1,
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "enum": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "uniqueItems": true
                },
                "default": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                }
            }
        },
        "topics": {
            "id": "http://asyncapi.com/definitions/1.0.0/topics.json",
            "type": "object",
            "description": "Relative paths to the individual topics. They must be relative to the 'baseTopic'.",
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                },
                "^[^.]": {
                    "$ref": "#/definitions/topicItem"
                }
            },
            "additionalProperties": false
        },
        "topicItem": {
            "id": "http://asyncapi.com/definitions/1.0.0/topicItem.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "minProperties": 1,
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "publish": {
                    "$ref": "#/definitions/message"
                },
                "subscribe": {
                    "$ref": "#/definitions/message"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                }
            }
        },
        "message": {
            "id": "http://asyncapi.com/definitions/1.0.0/message.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "headers": {
                    "$ref": "#/definitions/schema"
                },
                "payload": {
                    "$ref": "#/definitions/schema"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/tag"
                    },
                    "uniqueItems": true
                },
                "summary": {
                    "type": "string",
                    "description": "A brief summary of the message."
                },
                "description": {
                    "type": "string",
                    "description": "A longer description of the message. CommonMark is allowed."
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "example": {}
            }
        },
        "schema": {
            "id": "http://asyncapi.com/definitions/1.0.0/schema.json",
            "type": "object",
            "description": "A deterministic version of a JSON Schema object.",
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "format": {
                    "type": "string"
                },
                "title": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "description": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "default": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "multipleOf": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "maximum": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "minimum": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "maxLength": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "minLength": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "pattern": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "maxItems": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "minItems": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "maxProperties": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "minProperties": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "required": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "enum": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "additionalProperties": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/schema"
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": {}
                },
                "type": {
                    "$ref": "#/definitions/json-schema-draft-07-schema"
                },
                "items": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/schema"
                        },
                        {
                            "type": "array",
                            "minItems": 1,
                            "items": {
                                "$ref": "#/definitions/schema"
                            }
                        }
                    ],
                    "default": {}
                },
                "allOf": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/schema"
                    }
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/schema"
                    },
                    "default": {}
                },
                "discriminator": {
                    "type": "string"
                },
                "readOnly": {
                    "type": "boolean",
                    "default": false
                },
                "xml": {
                    "$ref": "#/definitions/xml"
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                },
                "example": {}
            },
            "additionalProperties": false
        },
        "json-schema-draft-07-schema": {
            "id": "http://json-schema.org/draft-04/schema",
            "description": "Core schema meta-schema",
            "definitions": {
                "schemaArray": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/json-schema-draft-07-schema"
                    }
                },
                "positiveInteger": {
                    "type": "integer",
                    "minimum": 0
                },
                "positiveIntegerDefault0": {
                    "allOf": [
                        {
                            "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveInteger"
                        },
                        {
                            "default": 0
                        }
                    ]
                },
                "simpleTypes": {
                    "enum": [
                        "array",
                        "boolean",
                        "integer",
                        "null",
                        "number",
                        "object",
                        "string"
                    ]
                },
                "stringArray": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "minItems": 1,
                    "uniqueItems": true
                }
            },
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "$schema": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "default": {},
                "multipleOf": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMinimum": true
                },
                "maximum": {
                    "type": "number"
                },
                "exclusiveMaximum": {
                    "type": "boolean",
                    "default": false
                },
                "minimum": {
                    "type": "number"
                },
                "exclusiveMinimum": {
                    "type": "boolean",
                    "default": false
                },
                "maxLength": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveInteger"
                },
                "minLength": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveIntegerDefault0"
                },
                "pattern": {
                    "type": "string",
                    "format": "regex"
                },
                "additionalItems": {
                    "anyOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "$ref": "#/definitions/json-schema-draft-07-schema"
                        }
                    ],
                    "default": {}
                },
                "items": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/json-schema-draft-07-schema"
                        },
                        {
                            "$ref": "#/definitions/json-schema-draft-07-schema/definitions/schemaArray"
                        }
                    ],
                    "default": {}
                },
                "maxItems": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveInteger"
                },
                "minItems": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveIntegerDefault0"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "default": false
                },
                "maxProperties": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveInteger"
                },
                "minProperties": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/positiveIntegerDefault0"
                },
                "required": {
                    "$ref": "#/definitions/json-schema-draft-07-schema/definitions/stringArray"
                },
                "additionalProperties": {
                    "anyOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "$ref": "#/definitions/json-schema-draft-07-schema"
                        }
                    ],
                    "default": {}
                },
                "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"
                    },
                    "default": {}
                },
                "dependencies": {
                    "type": "object",
                    "additionalProperties": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/json-schema-draft-07-schema"
                            },
                            {
                                "$ref": "#/definitions/json-schema-draft-07-schema/definitions/stringArray"
                            }
                        ]
                    }
                },
                "enum": {
                    "type": "array",
                    "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"
                },
                "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"
                }
            },
            "dependencies": {
                "exclusiveMaximum": [
                    "maximum"
                ],
                "exclusiveMinimum": [
                    "minimum"
                ]
            },
            "default": {}
        },
        "xml": {
            "id": "http://asyncapi.com/definitions/1.0.0/xml.json",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                },
                "prefix": {
                    "type": "string"
                },
                "attribute": {
                    "type": "boolean",
                    "default": false
                },
                "wrapped": {
                    "type": "boolean",
                    "default": false
                }
            }
        },
        "externalDocs": {
            "id": "http://asyncapi.com/definitions/1.0.0/externalDocs.json",
            "type": "object",
            "additionalProperties": false,
            "description": "information about external documentation",
            "required": [
                "url"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "tag": {
            "id": "http://asyncapi.com/definitions/1.0.0/tag.json",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "components": {
            "id": "http://asyncapi.com/definitions/1.0.0/components.json",
            "type": "object",
            "description": "An object to hold a set of reusable objects for different aspects of the AsyncAPI Specification.",
            "additionalProperties": false,
            "properties": {
                "schemas": {
                    "$ref": "#/definitions/schemas"
                },
                "messages": {
                    "$ref": "#/definitions/messages"
                },
                "securitySchemes": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/SecurityScheme"
                                }
                            ]
                        }
                    }
                }
            }
        },
        "schemas": {
            "id": "http://asyncapi.com/definitions/1.0.0/schemas.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/schema"
            },
            "description": "JSON objects describing schemas the API uses."
        },
        "messages": {
            "id": "http://asyncapi.com/definitions/1.0.0/messages.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/message"
            },
            "description": "JSON objects describing the messages being consumed and produced by the API."
        },
        "Reference": {
            "id": "http://asyncapi.com/definitions/1.0.0/Reference.json",
            "type": "object",
            "required": [
                "$ref"
            ],
            "properties": {
                "$ref": {
                    "type": "string",
                    "format": "uri"
                }
            }
        },
        "SecurityScheme": {
            "id": "http://asyncapi.com/definitions/1.0.0/SecurityScheme.json",
            "oneOf": [
                {
                    "$ref": "#/definitions/userPassword"
                },
                {
                    "$ref": "#/definitions/apiKey"
                },
                {
                    "$ref": "#/definitions/X509"
                },
                {
                    "$ref": "#/definitions/symmetricEncryption"
                },
                {
                    "$ref": "#/definitions/asymmetricEncryption"
                },
                {
                    "$ref": "#/definitions/HTTPSecurityScheme"
                }
            ]
        },
        "userPassword": {
            "id": "http://asyncapi.com/definitions/1.0.0/userPassword.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "userPassword"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "apiKey": {
            "id": "http://asyncapi.com/definitions/1.0.0/apiKey.json",
            "type": "object",
            "required": [
                "type",
                "in"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "apiKey"
                    ]
                },
                "in": {
                    "type": "string",
                    "enum": [
                        "user",
                        "password"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "X509": {
            "id": "http://asyncapi.com/definitions/1.0.0/X509.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "X509"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "symmetricEncryption": {
            "id": "http://asyncapi.com/definitions/1.0.0/symmetricEncryption.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "symmetricEncryption"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "asymmetricEncryption": {
            "id": "http://asyncapi.com/definitions/1.0.0/asymmetricEncryption.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "asymmetricEncryption"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "HTTPSecurityScheme": {
            "id": "http://asyncapi.com/definitions/1.0.0/HTTPSecurityScheme.json",
            "oneOf": [
                {
                    "$ref": "#/definitions/NonBearerHTTPSecurityScheme"
                },
                {
                    "$ref": "#/definitions/BearerHTTPSecurityScheme"
                },
                {
                    "$ref": "#/definitions/APIKeyHTTPSecurityScheme"
                }
            ]
        },
        "NonBearerHTTPSecurityScheme": {
            "id": "http://asyncapi.com/definitions/1.0.0/NonBearerHTTPSecurityScheme.json",
            "not": {
                "type": "object",
                "properties": {
                    "scheme": {
                        "type": "string",
                        "enum": [
                            "bearer"
                        ]
                    }
                }
            },
            "type": "object",
            "required": [
                "scheme",
                "type"
            ],
            "properties": {
                "scheme": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "http"
                    ]
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "BearerHTTPSecurityScheme": {
            "id": "http://asyncapi.com/definitions/1.0.0/BearerHTTPSecurityScheme.json",
            "type": "object",
            "required": [
                "type",
                "scheme"
            ],
            "properties": {
                "scheme": {
                    "type": "string",
                    "enum": [
                        "bearer"
                    ]
                },
                "bearerFormat": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "http"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "APIKeyHTTPSecurityScheme": {
            "id": "http://asyncapi.com/definitions/1.0.0/APIKeyHTTPSecurityScheme.json",
            "type": "object",
            "required": [
                "type",
                "name",
                "in"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "httpApiKey"
                    ]
                },
                "name": {
                    "type": "string"
                },
                "in": {
                    "type": "string",
                    "enum": [
                        "header",
                        "query",
                        "cookie"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "SecurityRequirement": {
            "id": "http://asyncapi.com/definitions/1.0.0/SecurityRequirement.json",
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "type": "string"
                }
            }
        }
    },
    "description": "!!Auto generated!! \n Do not manually edit. "
}