{
    "$id": "http://asyncapi.com/definitions/2.0.0-rc1/asyncapi.json",
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "AsyncAPI 2.0.0-rc1 schema.",
    "type": "object",
    "required": [
        "asyncapi",
        "id",
        "info",
        "channels"
    ],
    "additionalProperties": false,
    "patternProperties": {
        "^x-[\\w\\d\\.\\x2d_]+$": {
            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
        }
    },
    "properties": {
        "asyncapi": {
            "type": "string",
            "enum": [
                "2.0.0-rc1"
            ],
            "description": "The AsyncAPI specification version of this document."
        },
        "id": {
            "type": "string",
            "description": "A unique id representing the application.",
            "format": "uri-reference"
        },
        "info": {
            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/info.json"
        },
        "servers": {
            "type": "array",
            "items": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/server.json"
            },
            "uniqueItems": true
        },
        "defaultContentType": {
            "type": "string"
        },
        "channels": {
            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/channels.json"
        },
        "components": {
            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/components.json"
        },
        "tags": {
            "type": "array",
            "items": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json"
            },
            "uniqueItems": true
        },
        "externalDocs": {
            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
        }
    },
    "definitions": {
        "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json",
            "description": "Any property starting with x- is valid.",
            "additionalProperties": true,
            "additionalItems": true
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/info.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/info.json",
            "type": "object",
            "description": "General information about the API.",
            "required": [
                "version",
                "title"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "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": "http://asyncapi.com/definitions/2.0.0-rc1/contact.json"
                },
                "license": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/license.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/contact.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/license.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/server.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/server.json",
            "type": "object",
            "description": "An object representing a Server.",
            "required": [
                "url",
                "protocol"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "url": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "protocol": {
                    "type": "string",
                    "description": "The transfer protocol."
                },
                "protocolVersion": {
                    "type": "string"
                },
                "variables": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/serverVariables.json"
                },
                "baseChannel": {
                    "type": "string",
                    "x-format": "uri-path"
                },
                "security": {
                    "type": "array",
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/SecurityRequirement.json"
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/serverVariables.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/serverVariables.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/serverVariable.json"
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/serverVariable.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/serverVariable.json",
            "type": "object",
            "description": "An object representing a Server Variable for server URL template substitution.",
            "minProperties": 1,
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "enum": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "uniqueItems": true
                },
                "default": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "examples": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/SecurityRequirement.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/SecurityRequirement.json",
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "type": "string"
                },
                "uniqueItems": true
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/channels.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/channels.json",
            "type": "object",
            "propertyNames": {
                "type": "string",
                "format": "uri-template",
                "minLength": 1
            },
            "additionalProperties": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/channelItem.json"
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/channelItem.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/channelItem.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "minProperties": 1,
            "properties": {
                "$ref": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json"
                },
                "parameters": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/parameters.json"
                },
                "publish": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/operation.json"
                },
                "subscribe": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/operation.json"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "protocolInfo": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object"
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json",
            "type": "string",
            "format": "uri"
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/parameters.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/parameters.json",
            "type": "object",
            "additionalProperties": {
                "oneOf": [
                    {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                    },
                    {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/parameter.json"
                    }
                ]
            },
            "description": "JSON objects describing re-usable channel parameters."
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json",
            "type": "object",
            "required": [
                "$ref"
            ],
            "properties": {
                "$ref": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/parameter.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/parameter.json",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "schema": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                },
                "$ref": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/schema.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json",
            "type": "object",
            "description": "A deterministic version of a JSON Schema object.",
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "$ref": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/ReferenceObject.json"
                },
                "format": {
                    "type": "string"
                },
                "title": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
                },
                "description": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
                },
                "default": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
                },
                "multipleOf": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
                },
                "maximum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minLength": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "pattern": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
                },
                "maxItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "uniqueItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
                },
                "maxProperties": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minProperties": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "required": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
                },
                "enum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "additionalProperties": {
                    "anyOf": [
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": {}
                },
                "type": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/type"
                },
                "items": {
                    "anyOf": [
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                        },
                        {
                            "type": "array",
                            "minItems": 1,
                            "items": {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                            }
                        }
                    ],
                    "default": {}
                },
                "allOf": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                    }
                },
                "oneOf": {
                    "type": "array",
                    "minItems": 2,
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                    }
                },
                "anyOf": {
                    "type": "array",
                    "minItems": 2,
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                    }
                },
                "not": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                    },
                    "default": {}
                },
                "discriminator": {
                    "type": "string"
                },
                "readOnly": {
                    "type": "boolean",
                    "default": false
                },
                "xml": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/xml.json"
                },
                "externalDocs": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                },
                "example": {},
                "examples": {
                    "type": "array",
                    "items": {}
                }
            },
            "additionalProperties": false
        },
        "http://json-schema.org/draft-04/schema": {
            "id": "http://json-schema.org/draft-04/schema",
            "$schema": "http://json-schema.org/draft-04/schema",
            "description": "Core schema meta-schema",
            "definitions": {
                "schemaArray": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#"
                    }
                },
                "positiveInteger": {
                    "type": "integer",
                    "minimum": 0
                },
                "positiveIntegerDefault0": {
                    "allOf": [
                        {
                            "$ref": "#/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/positiveInteger"
                },
                "minLength": {
                    "$ref": "#/definitions/positiveIntegerDefault0"
                },
                "pattern": {
                    "type": "string",
                    "format": "regex"
                },
                "additionalItems": {
                    "anyOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "$ref": "#"
                        }
                    ],
                    "default": {}
                },
                "items": {
                    "anyOf": [
                        {
                            "$ref": "#"
                        },
                        {
                            "$ref": "#/definitions/schemaArray"
                        }
                    ],
                    "default": {}
                },
                "maxItems": {
                    "$ref": "#/definitions/positiveInteger"
                },
                "minItems": {
                    "$ref": "#/definitions/positiveIntegerDefault0"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "default": false
                },
                "maxProperties": {
                    "$ref": "#/definitions/positiveInteger"
                },
                "minProperties": {
                    "$ref": "#/definitions/positiveIntegerDefault0"
                },
                "required": {
                    "$ref": "#/definitions/stringArray"
                },
                "additionalProperties": {
                    "anyOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "$ref": "#"
                        }
                    ],
                    "default": {}
                },
                "definitions": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#"
                    },
                    "default": {}
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#"
                    },
                    "default": {}
                },
                "patternProperties": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#"
                    },
                    "default": {}
                },
                "dependencies": {
                    "type": "object",
                    "additionalProperties": {
                        "anyOf": [
                            {
                                "$ref": "#"
                            },
                            {
                                "$ref": "#/definitions/stringArray"
                            }
                        ]
                    }
                },
                "enum": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true
                },
                "type": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/simpleTypes"
                        },
                        {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/simpleTypes"
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        }
                    ]
                },
                "format": {
                    "type": "string"
                },
                "allOf": {
                    "$ref": "#/definitions/schemaArray"
                },
                "anyOf": {
                    "$ref": "#/definitions/schemaArray"
                },
                "oneOf": {
                    "$ref": "#/definitions/schemaArray"
                },
                "not": {
                    "$ref": "#"
                }
            },
            "dependencies": {
                "exclusiveMaximum": [
                    "maximum"
                ],
                "exclusiveMinimum": [
                    "minimum"
                ]
            },
            "default": {}
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/xml.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json",
            "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": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/operation.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/operation.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "traits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                            },
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/operationTrait.json"
                            }
                        ]
                    }
                },
                "summary": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json"
                    },
                    "uniqueItems": true
                },
                "externalDocs": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                },
                "operationId": {
                    "type": "string"
                },
                "protocolInfo": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object"
                    }
                },
                "message": {
                    "oneOf": [
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/message.json"
                        },
                        {
                            "type": "object",
                            "required": [
                                "oneOf"
                            ],
                            "additionalProperties": false,
                            "patternProperties": {
                                "^x-[\\w\\d\\.\\x2d_]+$": {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                                }
                            },
                            "properties": {
                                "oneOf": {
                                    "type": "array",
                                    "minItems": 2,
                                    "items": {
                                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/message.json"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/operationTrait.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/operationTrait.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "summary": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json"
                    },
                    "uniqueItems": true
                },
                "externalDocs": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                },
                "operationId": {
                    "type": "string"
                },
                "protocolInfo": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object"
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/tag.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "externalDocs": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/message.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/message.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "schemaFormat": {
                    "type": "string"
                },
                "contentType": {
                    "type": "string"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                            },
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                            }
                        ]
                    }
                },
                "payload": {},
                "correlationId": {
                    "oneOf": [
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                        },
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/correlationId.json"
                        }
                    ]
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json"
                    },
                    "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": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "examples": {
                    "type": "array",
                    "items": {
                        "type": "object"
                    }
                },
                "protocolInfo": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object"
                    }
                },
                "traits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                            },
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/messageTrait.json"
                            }
                        ]
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/correlationId.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/correlationId.json",
            "type": "object",
            "required": [
                "location"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "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)#(/\\w+)+"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/messageTrait.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/messageTrait.json",
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "properties": {
                "schemaFormat": {
                    "type": "string"
                },
                "contentType": {
                    "type": "string"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                            },
                            {
                                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
                            }
                        ]
                    }
                },
                "correlationId": {
                    "oneOf": [
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                        },
                        {
                            "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/correlationId.json"
                        }
                    ]
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/tag.json"
                    },
                    "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": "http://asyncapi.com/definitions/2.0.0-rc1/externalDocs.json"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "examples": {
                    "type": "array",
                    "items": {
                        "type": "object"
                    }
                },
                "protocolInfo": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object"
                    }
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/components.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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": "http://asyncapi.com/definitions/2.0.0-rc1/schemas.json"
                },
                "messages": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/messages.json"
                },
                "securitySchemes": {
                    "type": "object",
                    "patternProperties": {
                        "^[\\w\\d\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                                },
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/SecurityScheme.json"
                                }
                            ]
                        }
                    }
                },
                "parameters": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/parameters.json"
                },
                "correlationIds": {
                    "type": "object",
                    "patternProperties": {
                        "^[\\w\\d\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/Reference.json"
                                },
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/correlationId.json"
                                }
                            ]
                        }
                    }
                },
                "traits": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/traits.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/schemas.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/schemas.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/schema.json"
            },
            "description": "JSON objects describing schemas the API uses."
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/messages.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/messages.json",
            "type": "object",
            "additionalProperties": {
                "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/message.json"
            },
            "description": "JSON objects describing the messages being consumed and produced by the API."
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/SecurityScheme.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/SecurityScheme.json",
            "oneOf": [
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/userPassword.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/apiKey.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/X509.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/symmetricEncryption.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/asymmetricEncryption.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/HTTPSecurityScheme.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flows.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/openIdConnect.json"
                }
            ]
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/userPassword.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/userPassword.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "userPassword"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/apiKey.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/apiKey.json",
            "type": "object",
            "required": [
                "type",
                "in"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "apiKey"
                    ]
                },
                "in": {
                    "type": "string",
                    "enum": [
                        "user",
                        "password"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/X509.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/X509.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "X509"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/symmetricEncryption.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/symmetricEncryption.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "symmetricEncryption"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/asymmetricEncryption.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/asymmetricEncryption.json",
            "type": "object",
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "asymmetricEncryption"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/HTTPSecurityScheme.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/HTTPSecurityScheme.json",
            "oneOf": [
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/NonBearerHTTPSecurityScheme.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/BearerHTTPSecurityScheme.json"
                },
                {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/APIKeyHTTPSecurityScheme.json"
                }
            ]
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/NonBearerHTTPSecurityScheme.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/BearerHTTPSecurityScheme.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/APIKeyHTTPSecurityScheme.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/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-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flows.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flows.json",
            "type": "object",
            "required": [
                "type",
                "flows"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "description": {
                    "type": "string"
                },
                "flows": {
                    "type": "object",
                    "properties": {
                        "implicit": {
                            "allOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json"
                                },
                                {
                                    "required": [
                                        "authorizationUrl",
                                        "scopes"
                                    ]
                                },
                                {
                                    "not": {
                                        "required": [
                                            "tokenUrl"
                                        ]
                                    }
                                }
                            ]
                        },
                        "password": {
                            "allOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json"
                                },
                                {
                                    "required": [
                                        "tokenUrl",
                                        "scopes"
                                    ]
                                },
                                {
                                    "not": {
                                        "required": [
                                            "authorizationUrl"
                                        ]
                                    }
                                }
                            ]
                        },
                        "clientCredentials": {
                            "allOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json"
                                },
                                {
                                    "required": [
                                        "tokenUrl",
                                        "scopes"
                                    ]
                                },
                                {
                                    "not": {
                                        "required": [
                                            "authorizationUrl"
                                        ]
                                    }
                                }
                            ]
                        },
                        "authorizationCode": {
                            "allOf": [
                                {
                                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json"
                                },
                                {
                                    "required": [
                                        "authorizationUrl",
                                        "tokenUrl",
                                        "scopes"
                                    ]
                                }
                            ]
                        }
                    },
                    "additionalProperties": false,
                    "minProperties": 1
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Flow.json",
            "type": "object",
            "properties": {
                "authorizationUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "tokenUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "refreshUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "scopes": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Scopes.json"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Scopes.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/oauth2Scopes.json",
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/openIdConnect.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/openIdConnect.json",
            "type": "object",
            "required": [
                "type",
                "openIdConnectUrl"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "openIdConnect"
                    ]
                },
                "description": {
                    "type": "string"
                },
                "openIdConnectUrl": {
                    "type": "string",
                    "format": "uri"
                }
            },
            "patternProperties": {
                "^x-[\\w\\d\\.\\x2d_]+$": {
                    "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/specificationExtension.json"
                }
            },
            "additionalProperties": false
        },
        "http://asyncapi.com/definitions/2.0.0-rc1/traits.json": {
            "$id": "http://asyncapi.com/definitions/2.0.0-rc1/traits.json",
            "type": "object",
            "additionalProperties": {
                "anyOf": [
                    {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/operationTrait.json"
                    },
                    {
                        "$ref": "http://asyncapi.com/definitions/2.0.0-rc1/messageTrait.json"
                    }
                ]
            }
        }
    },
    "description": "!!Auto generated!! \n Do not manually edit. "
}