{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/asyncapi/_shared/latest--2.6.0-without-$id.json",
  "title": "AsyncAPI 2.6.0 schema.",
  "description": "!!Auto generated!! \n Do not manually edit. ",
  "x-lintel": {
    "source": "http://asyncapi.com/schema-store/2.6.0-without-$id.json",
    "sourceSha256": "be227ff668d64da62932c8409daca58fef1f7749f5d386175111f17314595137"
  },
  "type": "object",
  "properties": {
    "asyncapi": {
      "type": "string",
      "enum": [
        "2.6.0"
      ],
      "description": "The AsyncAPI specification version of this document."
    },
    "id": {
      "type": "string",
      "description": "A unique id representing the application.",
      "format": "uri"
    },
    "info": {
      "$ref": "#/$defs/info"
    },
    "servers": {
      "$ref": "#/$defs/servers"
    },
    "defaultContentType": {
      "type": "string"
    },
    "channels": {
      "$ref": "#/$defs/channels"
    },
    "components": {
      "$ref": "#/$defs/components"
    },
    "tags": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/tag"
      },
      "uniqueItems": true
    },
    "externalDocs": {
      "$ref": "#/$defs/externalDocs"
    }
  },
  "$defs": {
    "specificationExtension": {
      "description": "Any property starting with x- is valid.",
      "additionalItems": true,
      "additionalProperties": true
    },
    "info": {
      "type": "object",
      "description": "The object provides metadata about the API. The metadata can be used by the clients if needed.",
      "required": [
        "version",
        "title"
      ],
      "examples": [
        {
          "title": "AsyncAPI Sample App",
          "description": "This is a sample server.",
          "termsOfService": "https://asyncapi.org/terms/",
          "contact": {
            "name": "API Support",
            "url": "https://www.example.com/support",
            "email": "support@example.com"
          },
          "license": {
            "name": "Apache 2.0",
            "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
          }
        }
      ],
      "additionalProperties": false,
      "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": "#/$defs/contact"
        },
        "license": {
          "$ref": "#/$defs/license"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "contact": {
      "type": "object",
      "description": "Contact information for the exposed API.",
      "examples": [
        {
          "name": "API Support",
          "url": "https://www.example.com/support",
          "email": "support@example.com"
        }
      ],
      "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"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "license": {
      "type": "object",
      "required": [
        "name"
      ],
      "description": "License information for the exposed API.",
      "examples": [
        {
          "name": "Apache 2.0",
          "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
        }
      ],
      "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"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "servers": {
      "description": "The Servers Object is a map of Server Objects.",
      "type": "object",
      "examples": [
        {
          "development": {
            "url": "development.gigantic-server.com",
            "description": "Development server",
            "protocol": "amqp",
            "protocolVersion": "0.9.1",
            "tags": [
              {
                "name": "env:development",
                "description": "This environment is meant for developers to run their own tests"
              }
            ]
          },
          "staging": {
            "url": "staging.gigantic-server.com",
            "description": "Staging server",
            "protocol": "amqp",
            "protocolVersion": "0.9.1",
            "tags": [
              {
                "name": "env:staging",
                "description": "This environment is a replica of the production environment"
              }
            ]
          },
          "production": {
            "url": "api.gigantic-server.com",
            "description": "Production server",
            "protocol": "amqp",
            "protocolVersion": "0.9.1",
            "tags": [
              {
                "name": "env:production",
                "description": "This environment is the live environment available for final users"
              }
            ]
          }
        }
      ],
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/$defs/Reference"
          },
          {
            "$ref": "#/$defs/server"
          }
        ]
      }
    },
    "Reference": {
      "type": "object",
      "required": [
        "$ref"
      ],
      "properties": {
        "$ref": {
          "$ref": "#/$defs/ReferenceObject"
        }
      }
    },
    "ReferenceObject": {
      "type": "string",
      "description": "A simple object to allow referencing other components in the specification, internally and externally.",
      "format": "uri-reference",
      "examples": [
        {
          "$ref": "#/components/schemas/Pet"
        }
      ]
    },
    "server": {
      "type": "object",
      "description": "An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data",
      "required": [
        "url",
        "protocol"
      ],
      "examples": [
        {
          "url": "development.gigantic-server.com",
          "description": "Development server",
          "protocol": "kafka",
          "protocolVersion": "1.0.0"
        }
      ],
      "additionalProperties": false,
      "properties": {
        "url": {
          "type": "string",
          "description": "A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served."
        },
        "description": {
          "type": "string",
          "description": "An optional string describing the host designated by the URL. CommonMark syntax MAY be used for rich text representation."
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this URL supports for connection. Supported protocol include, but are not limited to: amqp, amqps, http, https, ibmmq, jms, kafka, kafka-secure, anypointmq, mqtt, secure-mqtt, solace, stomp, stomps, ws, wss, mercure, googlepubsub."
        },
        "protocolVersion": {
          "type": "string",
          "description": "The version of the protocol used for connection. For instance: AMQP 0.9.1, HTTP 2.0, Kafka 1.0.0, etc."
        },
        "variables": {
          "description": "A map between a variable name and its value. The value is used for substitution in the server's URL template.",
          "$ref": "#/$defs/serverVariables"
        },
        "security": {
          "type": "array",
          "description": "A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. ",
          "items": {
            "$ref": "#/$defs/SecurityRequirement"
          }
        },
        "bindings": {
          "description": "A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server.",
          "$ref": "#/$defs/bindingsObject"
        },
        "tags": {
          "type": "array",
          "description": "A list of tags for logical grouping and categorization of servers.",
          "items": {
            "$ref": "#/$defs/tag"
          },
          "uniqueItems": true
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "serverVariables": {
      "type": "object",
      "description": "A map between a variable name and its value. The value is used for substitution in the server's URL template.",
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/$defs/Reference"
          },
          {
            "$ref": "#/$defs/serverVariable"
          }
        ]
      }
    },
    "serverVariable": {
      "type": "object",
      "description": "An object representing a Server Variable for server URL template substitution.",
      "properties": {
        "enum": {
          "type": "array",
          "description": "An enumeration of string values to be used if the substitution options are from a limited set.",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "default": {
          "type": "string",
          "description": "The default value to use for substitution, and to send, if an alternate value is not supplied."
        },
        "description": {
          "type": "string",
          "description": "An optional description for the server variable. "
        },
        "examples": {
          "type": "array",
          "description": "An array of examples of the server variable.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "SecurityRequirement": {
      "type": "object",
      "description": "Lists of the required security schemes that can be used to execute an operation",
      "examples": [
        {
          "petstore_auth": [
            "write:pets",
            "read:pets"
          ]
        }
      ],
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "uniqueItems": true
      }
    },
    "bindingsObject": {
      "type": "object",
      "description": "Map describing protocol-specific definitions for a server.",
      "properties": {
        "http": {},
        "ws": {},
        "amqp": {},
        "amqp1": {},
        "mqtt": {},
        "mqtt5": {},
        "kafka": {},
        "anypointmq": {},
        "nats": {},
        "jms": {},
        "sns": {},
        "sqs": {},
        "stomp": {},
        "redis": {},
        "ibmmq": {},
        "solace": {},
        "googlepubsub": {},
        "pulsar": {}
      },
      "additionalProperties": true
    },
    "tag": {
      "type": "object",
      "description": "Allows adding meta data to a single tag.",
      "examples": [
        {
          "name": "user",
          "description": "User-related messages"
        }
      ],
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the tag."
        },
        "description": {
          "type": "string",
          "description": "A short description for the tag."
        },
        "externalDocs": {
          "description": "Additional external documentation for this tag.",
          "$ref": "#/$defs/externalDocs"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "externalDocs": {
      "type": "object",
      "examples": [
        {
          "description": "Find more info here",
          "url": "https://example.com"
        }
      ],
      "description": "Allows referencing an external resource for extended documentation.",
      "required": [
        "url"
      ],
      "properties": {
        "description": {
          "type": "string",
          "description": "A short description of the target documentation."
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The URL for the target documentation. This MUST be in the form of an absolute URL."
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "channels": {
      "type": "object",
      "description": "Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers.",
      "propertyNames": {
        "type": "string",
        "format": "uri-template",
        "minLength": 1
      },
      "examples": [
        {
          "user/signedup": {
            "subscribe": {
              "message": {
                "$ref": "#/components/messages/userSignedUp"
              }
            }
          }
        }
      ],
      "additionalProperties": {
        "$ref": "#/$defs/channelItem"
      }
    },
    "channelItem": {
      "type": "object",
      "description": "Describes the operations available on a single channel.",
      "examples": [
        {
          "description": "This channel is used to exchange messages about users signing up",
          "subscribe": {
            "summary": "A user signed up.",
            "message": {
              "description": "A longer description of the message",
              "payload": {
                "type": "object",
                "properties": {
                  "user": {
                    "$ref": "#/components/schemas/user"
                  },
                  "signup": {
                    "$ref": "#/components/schemas/signup"
                  }
                }
              }
            }
          },
          "bindings": {
            "amqp": {
              "is": "queue",
              "queue": {
                "exclusive": true
              }
            }
          }
        },
        {
          "subscribe": {
            "message": {
              "oneOf": [
                {
                  "$ref": "#/components/messages/signup"
                },
                {
                  "$ref": "#/components/messages/login"
                }
              ]
            }
          }
        },
        {
          "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.",
          "servers": [
            "rabbitmqBrokerInProd",
            "rabbitmqBrokerInStaging"
          ],
          "subscribe": {
            "message": {
              "$ref": "#/components/messages/WebUICommand"
            }
          },
          "bindings": {
            "amqp": {
              "is": "queue"
            }
          }
        }
      ],
      "additionalProperties": false,
      "properties": {
        "$ref": {
          "$ref": "#/$defs/ReferenceObject"
        },
        "parameters": {
          "$ref": "#/$defs/parameters"
        },
        "description": {
          "type": "string",
          "description": "A description of the channel."
        },
        "servers": {
          "type": "array",
          "description": "The names of the servers on which this channel is available. If absent or empty then this channel must be available on all servers.",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "publish": {
          "$ref": "#/$defs/operation"
        },
        "subscribe": {
          "$ref": "#/$defs/operation"
        },
        "deprecated": {
          "type": "boolean",
          "default": false
        },
        "bindings": {
          "$ref": "#/$defs/bindingsObject"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "parameters": {
      "type": "object",
      "description": "JSON objects describing reusable channel parameters.",
      "examples": [
        {
          "user/{userId}/signup": {
            "parameters": {
              "userId": {
                "description": "Id of the user.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "subscribe": {
              "message": {
                "$ref": "#/components/messages/userSignedUp"
              }
            }
          }
        }
      ],
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/$defs/Reference"
          },
          {
            "$ref": "#/$defs/parameter"
          }
        ]
      }
    },
    "parameter": {
      "description": "Describes a parameter included in a channel name.",
      "examples": [
        {
          "user/{userId}/signup": {
            "parameters": {
              "userId": {
                "description": "Id of the user.",
                "schema": {
                  "type": "string"
                },
                "location": "$message.payload#/user/id"
              }
            },
            "subscribe": {
              "message": {
                "$ref": "#/components/messages/userSignedUp"
              }
            }
          }
        }
      ],
      "additionalProperties": false,
      "properties": {
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
        },
        "schema": {
          "$ref": "#/$defs/schema"
        },
        "location": {
          "type": "string",
          "description": "A runtime expression that specifies the location of the parameter value",
          "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      },
      "type": "object"
    },
    "schema": {
      "description": "The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays.",
      "allOf": [
        {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        {
          "properties": {
            "additionalProperties": {
              "anyOf": [
                {
                  "$ref": "#/$defs/schema"
                },
                {
                  "type": "boolean"
                }
              ],
              "default": {}
            },
            "items": {
              "anyOf": [
                {
                  "$ref": "#/$defs/schema"
                },
                {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "$ref": "#/$defs/schema"
                  }
                }
              ],
              "default": {}
            },
            "allOf": {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#/$defs/schema"
              }
            },
            "oneOf": {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#/$defs/schema"
              }
            },
            "anyOf": {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#/$defs/schema"
              }
            },
            "not": {
              "$ref": "#/$defs/schema"
            },
            "properties": {
              "type": "object",
              "default": {},
              "additionalProperties": {
                "$ref": "#/$defs/schema"
              }
            },
            "patternProperties": {
              "type": "object",
              "default": {},
              "additionalProperties": {
                "$ref": "#/$defs/schema"
              }
            },
            "propertyNames": {
              "$ref": "#/$defs/schema"
            },
            "contains": {
              "$ref": "#/$defs/schema"
            },
            "discriminator": {
              "type": "string",
              "description": "Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. "
            },
            "externalDocs": {
              "description": "Additional external documentation for this schema.",
              "$ref": "#/$defs/externalDocs"
            },
            "deprecated": {
              "type": "boolean",
              "default": false,
              "description": "Specifies that a schema is deprecated and SHOULD be transitioned out of usage"
            }
          },
          "patternProperties": {
            "^x-[\\w0-9\\.\\x2d_]+$": {
              "$ref": "#/$defs/specificationExtension"
            }
          },
          "type": "object"
        }
      ],
      "examples": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "object",
          "required": [
            "name"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "address": {
              "$ref": "#/components/schemas/Address"
            },
            "age": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          }
        }
      ]
    },
    "json-schema-draft-07-schema": {
      "title": "Core schema meta-schema",
      "default": true,
      "type": [
        "object",
        "boolean"
      ],
      "properties": {
        "$id": {
          "type": "string",
          "format": "uri-reference"
        },
        "$schema": {
          "type": "string",
          "format": "uri"
        },
        "$ref": {
          "type": "string",
          "format": "uri-reference"
        },
        "$comment": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "default": true,
        "readOnly": {
          "type": "boolean",
          "default": false
        },
        "writeOnly": {
          "type": "boolean",
          "default": false
        },
        "examples": {
          "type": "array",
          "items": true
        },
        "multipleOf": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "maximum": {
          "type": "number"
        },
        "exclusiveMaximum": {
          "type": "number"
        },
        "minimum": {
          "type": "number"
        },
        "exclusiveMinimum": {
          "type": "number"
        },
        "maxLength": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeInteger"
        },
        "minLength": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeIntegerDefault0"
        },
        "pattern": {
          "type": "string",
          "format": "regex"
        },
        "additionalItems": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "items": {
          "anyOf": [
            {
              "$ref": "#/$defs/json-schema-draft-07-schema"
            },
            {
              "$ref": "#/$defs/json-schema-draft-07-schema/$defs/schemaArray"
            }
          ],
          "default": true
        },
        "maxItems": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeInteger"
        },
        "minItems": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeIntegerDefault0"
        },
        "uniqueItems": {
          "type": "boolean",
          "default": false
        },
        "contains": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "maxProperties": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeInteger"
        },
        "minProperties": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeIntegerDefault0"
        },
        "required": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/stringArray"
        },
        "additionalProperties": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "definitions": {
          "type": "object",
          "default": {},
          "additionalProperties": {
            "$ref": "#/$defs/json-schema-draft-07-schema"
          }
        },
        "properties": {
          "type": "object",
          "default": {},
          "additionalProperties": {
            "$ref": "#/$defs/json-schema-draft-07-schema"
          }
        },
        "patternProperties": {
          "type": "object",
          "default": {},
          "propertyNames": {
            "format": "regex"
          },
          "additionalProperties": {
            "$ref": "#/$defs/json-schema-draft-07-schema"
          }
        },
        "dependencies": {
          "type": "object",
          "additionalProperties": {
            "anyOf": [
              {
                "$ref": "#/$defs/json-schema-draft-07-schema"
              },
              {
                "$ref": "#/$defs/json-schema-draft-07-schema/$defs/stringArray"
              }
            ]
          }
        },
        "propertyNames": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "const": true,
        "enum": {
          "type": "array",
          "items": true,
          "minItems": 1,
          "uniqueItems": true
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/json-schema-draft-07-schema/$defs/simpleTypes"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/json-schema-draft-07-schema/$defs/simpleTypes"
              },
              "minItems": 1,
              "uniqueItems": true
            }
          ]
        },
        "format": {
          "type": "string"
        },
        "contentMediaType": {
          "type": "string"
        },
        "contentEncoding": {
          "type": "string"
        },
        "if": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "then": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "else": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        },
        "allOf": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/schemaArray"
        },
        "anyOf": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/schemaArray"
        },
        "oneOf": {
          "$ref": "#/$defs/json-schema-draft-07-schema/$defs/schemaArray"
        },
        "not": {
          "$ref": "#/$defs/json-schema-draft-07-schema"
        }
      },
      "$defs": {
        "schemaArray": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/json-schema-draft-07-schema"
          }
        },
        "nonNegativeInteger": {
          "type": "integer",
          "minimum": 0
        },
        "nonNegativeIntegerDefault0": {
          "allOf": [
            {
              "$ref": "#/$defs/json-schema-draft-07-schema/$defs/nonNegativeInteger"
            },
            {
              "default": 0
            }
          ]
        },
        "simpleTypes": {
          "enum": [
            "array",
            "boolean",
            "integer",
            "null",
            "number",
            "object",
            "string"
          ]
        },
        "stringArray": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "uniqueItems": true,
          "default": []
        }
      }
    },
    "operation": {
      "type": "object",
      "description": "Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received.",
      "examples": [
        {
          "user/signedup": {
            "subscribe": {
              "message": {
                "$ref": "#/components/messages/userSignedUp"
              }
            }
          }
        }
      ],
      "additionalProperties": false,
      "properties": {
        "traits": {
          "type": "array",
          "description": "A list of traits to apply to the operation object.",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/Reference"
              },
              {
                "$ref": "#/$defs/operationTrait"
              }
            ]
          }
        },
        "summary": {
          "type": "string",
          "description": "A short summary of what the operation is about."
        },
        "description": {
          "type": "string",
          "description": "A verbose explanation of the operation."
        },
        "security": {
          "type": "array",
          "description": "A declaration of which security mechanisms are associated with this operation.",
          "items": {
            "$ref": "#/$defs/SecurityRequirement"
          }
        },
        "tags": {
          "type": "array",
          "description": "A list of tags for logical grouping and categorization of operations.",
          "items": {
            "$ref": "#/$defs/tag"
          },
          "uniqueItems": true
        },
        "externalDocs": {
          "$ref": "#/$defs/externalDocs"
        },
        "operationId": {
          "type": "string"
        },
        "bindings": {
          "$ref": "#/$defs/bindingsObject"
        },
        "message": {
          "$ref": "#/$defs/message"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "operationTrait": {
      "type": "object",
      "description": "Describes a trait that MAY be applied to an Operation Object.",
      "examples": [
        {
          "bindings": {
            "amqp": {
              "ack": false
            }
          }
        }
      ],
      "additionalProperties": false,
      "properties": {
        "summary": {
          "type": "string",
          "description": "A short summary of what the operation is about."
        },
        "description": {
          "type": "string",
          "description": "A verbose explanation of the operation."
        },
        "tags": {
          "type": "array",
          "description": "A list of tags for logical grouping and categorization of operations.",
          "items": {
            "$ref": "#/$defs/tag"
          },
          "uniqueItems": true
        },
        "externalDocs": {
          "$ref": "#/$defs/externalDocs"
        },
        "operationId": {
          "type": "string",
          "description": "Unique string used to identify the operation. The id MUST be unique among all operations described in the API."
        },
        "security": {
          "type": "array",
          "description": "A declaration of which security mechanisms are associated with this operation. ",
          "items": {
            "$ref": "#/$defs/SecurityRequirement"
          }
        },
        "bindings": {
          "$ref": "#/$defs/bindingsObject"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "message": {
      "description": "Describes a message received on a given channel and operation.",
      "oneOf": [
        {
          "$ref": "#/$defs/Reference"
        },
        {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "oneOf"
              ],
              "properties": {
                "oneOf": {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/message"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "allOf": [
                {
                  "if": {
                    "not": {
                      "required": [
                        "schemaFormat"
                      ]
                    }
                  },
                  "then": {
                    "properties": {
                      "payload": {
                        "$ref": "#/$defs/schema"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "schemaFormat"
                    ],
                    "properties": {
                      "schemaFormat": {
                        "enum": [
                          "application/vnd.aai.asyncapi;version=2.0.0",
                          "application/vnd.aai.asyncapi+json;version=2.0.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.0.0",
                          "application/vnd.aai.asyncapi;version=2.1.0",
                          "application/vnd.aai.asyncapi+json;version=2.1.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.1.0",
                          "application/vnd.aai.asyncapi;version=2.2.0",
                          "application/vnd.aai.asyncapi+json;version=2.2.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.2.0",
                          "application/vnd.aai.asyncapi;version=2.3.0",
                          "application/vnd.aai.asyncapi+json;version=2.3.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.3.0",
                          "application/vnd.aai.asyncapi;version=2.4.0",
                          "application/vnd.aai.asyncapi+json;version=2.4.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.4.0",
                          "application/vnd.aai.asyncapi;version=2.5.0",
                          "application/vnd.aai.asyncapi+json;version=2.5.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.5.0",
                          "application/vnd.aai.asyncapi;version=2.6.0",
                          "application/vnd.aai.asyncapi+json;version=2.6.0",
                          "application/vnd.aai.asyncapi+yaml;version=2.6.0"
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "then": {
                    "properties": {
                      "payload": {
                        "$ref": "#/$defs/schema"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "schemaFormat"
                    ],
                    "properties": {
                      "schemaFormat": {
                        "enum": [
                          "application/schema+json;version=draft-07",
                          "application/schema+yaml;version=draft-07"
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "then": {
                    "properties": {
                      "payload": {
                        "$ref": "#/$defs/json-schema-draft-07-schema"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "schemaFormat"
                    ],
                    "properties": {
                      "schemaFormat": {
                        "enum": [
                          "application/vnd.oai.openapi;version=3.0.0",
                          "application/vnd.oai.openapi+json;version=3.0.0",
                          "application/vnd.oai.openapi+yaml;version=3.0.0"
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "then": {
                    "properties": {
                      "payload": {
                        "$ref": "#/$defs/openapiSchema_3_0"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "schemaFormat"
                    ],
                    "properties": {
                      "schemaFormat": {
                        "enum": [
                          "application/vnd.apache.avro;version=1.9.0",
                          "application/vnd.apache.avro+json;version=1.9.0",
                          "application/vnd.apache.avro+yaml;version=1.9.0"
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "then": {
                    "properties": {
                      "payload": {
                        "$ref": "#/$defs/avroSchema_v1"
                      }
                    }
                  }
                }
              ],
              "additionalProperties": false,
              "properties": {
                "schemaFormat": {
                  "type": "string"
                },
                "contentType": {
                  "type": "string"
                },
                "headers": {
                  "allOf": [
                    {
                      "$ref": "#/$defs/schema"
                    },
                    {
                      "properties": {
                        "type": {
                          "const": "object"
                        }
                      }
                    }
                  ]
                },
                "messageId": {
                  "type": "string"
                },
                "payload": {},
                "correlationId": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/Reference"
                    },
                    {
                      "$ref": "#/$defs/correlationId"
                    }
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/tag"
                  },
                  "uniqueItems": true
                },
                "summary": {
                  "type": "string",
                  "description": "A brief summary of the message."
                },
                "name": {
                  "type": "string",
                  "description": "Name of the message."
                },
                "title": {
                  "type": "string",
                  "description": "A human-friendly title for the message."
                },
                "description": {
                  "type": "string",
                  "description": "A longer description of the message. CommonMark is allowed."
                },
                "externalDocs": {
                  "$ref": "#/$defs/externalDocs"
                },
                "deprecated": {
                  "type": "boolean",
                  "default": false
                },
                "examples": {
                  "type": "array",
                  "description": "List of examples.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Machine readable name of the message example."
                      },
                      "summary": {
                        "type": "string",
                        "description": "A brief summary of the message example."
                      },
                      "headers": {
                        "type": "object",
                        "description": "Schema definition of the application headers."
                      },
                      "payload": {
                        "description": "Definition of the message payload. It can be of any type"
                      }
                    },
                    "anyOf": [
                      {
                        "required": [
                          "payload"
                        ]
                      },
                      {
                        "required": [
                          "headers"
                        ]
                      }
                    ],
                    "additionalProperties": false
                  }
                },
                "bindings": {
                  "$ref": "#/$defs/bindingsObject"
                },
                "traits": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/Reference"
                      },
                      {
                        "$ref": "#/$defs/messageTrait"
                      }
                    ]
                  }
                }
              },
              "patternProperties": {
                "^x-[\\w0-9\\.\\x2d_]+$": {
                  "$ref": "#/$defs/specificationExtension"
                }
              }
            }
          ]
        }
      ],
      "examples": [
        {
          "messageId": "userSignup",
          "name": "UserSignup",
          "title": "User signup",
          "summary": "Action to sign a user up.",
          "description": "A longer description",
          "contentType": "application/json",
          "tags": [
            {
              "name": "user"
            },
            {
              "name": "signup"
            },
            {
              "name": "register"
            }
          ],
          "headers": {
            "type": "object",
            "properties": {
              "correlationId": {
                "description": "Correlation ID set by application",
                "type": "string"
              },
              "applicationInstanceId": {
                "description": "Unique identifier for a given instance of the publishing application",
                "type": "string"
              }
            }
          },
          "payload": {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/userCreate"
              },
              "signup": {
                "$ref": "#/components/schemas/signup"
              }
            }
          },
          "correlationId": {
            "description": "Default Correlation ID",
            "location": "$message.header#/correlationId"
          },
          "traits": [
            {
              "$ref": "#/components/messageTraits/commonHeaders"
            }
          ],
          "examples": [
            {
              "name": "SimpleSignup",
              "summary": "A simple UserSignup example message",
              "headers": {
                "correlationId": "my-correlation-id",
                "applicationInstanceId": "myInstanceId"
              },
              "payload": {
                "user": {
                  "someUserKey": "someUserValue"
                },
                "signup": {
                  "someSignupKey": "someSignupValue"
                }
              }
            }
          ]
        },
        {
          "messageId": "userSignup",
          "name": "UserSignup",
          "title": "User signup",
          "summary": "Action to sign a user up.",
          "description": "A longer description",
          "tags": [
            {
              "name": "user"
            },
            {
              "name": "signup"
            },
            {
              "name": "register"
            }
          ],
          "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0",
          "payload": {
            "$ref": "path/to/user-create.avsc#/UserCreate"
          }
        }
      ]
    },
    "correlationId": {
      "type": "object",
      "description": "An object that specifies an identifier at design time that can used for message tracing and correlation.",
      "required": [
        "location"
      ],
      "examples": [
        {
          "description": "Default Correlation ID",
          "location": "$message.header#/correlationId"
        }
      ],
      "additionalProperties": false,
      "properties": {
        "description": {
          "type": "string",
          "description": "A optional description of the correlation ID. GitHub Flavored Markdown is allowed."
        },
        "location": {
          "type": "string",
          "description": "A runtime expression that specifies the location of the correlation ID",
          "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "messageTrait": {
      "type": "object",
      "description": "Describes a trait that MAY be applied to a Message Object.",
      "examples": [
        {
          "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0",
          "contentType": "application/json"
        }
      ],
      "additionalProperties": false,
      "properties": {
        "schemaFormat": {
          "type": "string",
          "description": "A string containing the name of the schema format/language used to define the message payload."
        },
        "contentType": {
          "type": "string",
          "description": "The content type to use when encoding/decoding a message's payload."
        },
        "headers": {
          "description": "Schema definition of the application headers.",
          "allOf": [
            {
              "$ref": "#/$defs/schema"
            },
            {
              "properties": {
                "type": {
                  "const": "object"
                }
              }
            }
          ]
        },
        "messageId": {
          "type": "string",
          "description": "Unique string used to identify the message. The id MUST be unique among all messages described in the API."
        },
        "correlationId": {
          "description": "Definition of the correlation ID used for message tracing or matching.",
          "oneOf": [
            {
              "$ref": "#/$defs/Reference"
            },
            {
              "$ref": "#/$defs/correlationId"
            }
          ]
        },
        "tags": {
          "type": "array",
          "description": "A list of tags for logical grouping and categorization of messages.",
          "items": {
            "$ref": "#/$defs/tag"
          },
          "uniqueItems": true
        },
        "summary": {
          "type": "string",
          "description": "A brief summary of the message."
        },
        "name": {
          "type": "string",
          "description": "Name of the message."
        },
        "title": {
          "type": "string",
          "description": "A human-friendly title for the message."
        },
        "description": {
          "type": "string",
          "description": "A longer description of the message. CommonMark is allowed."
        },
        "externalDocs": {
          "$ref": "#/$defs/externalDocs"
        },
        "deprecated": {
          "type": "boolean",
          "default": false
        },
        "examples": {
          "type": "array",
          "description": "List of examples.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Machine readable name of the message example."
              },
              "summary": {
                "type": "string",
                "description": "A brief summary of the message example."
              },
              "headers": {
                "type": "object",
                "description": "Schema definition of the application headers."
              },
              "payload": {
                "description": "Definition of the message payload. It can be of any type"
              }
            },
            "anyOf": [
              {
                "required": [
                  "payload"
                ]
              },
              {
                "required": [
                  "headers"
                ]
              }
            ],
            "additionalProperties": false
          }
        },
        "bindings": {
          "$ref": "#/$defs/bindingsObject"
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "openapiSchema_3_0": {
      "type": "object",
      "$defs": {
        "ExternalDocumentation": {
          "type": "object",
          "required": [
            "url"
          ],
          "properties": {
            "description": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri-reference"
            }
          },
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          }
        },
        "Discriminator": {
          "type": "object",
          "required": [
            "propertyName"
          ],
          "properties": {
            "propertyName": {
              "type": "string"
            },
            "mapping": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        },
        "Reference": {
          "type": "object",
          "required": [
            "$ref"
          ],
          "patternProperties": {
            "^\\$ref$": {
              "type": "string",
              "format": "uri-reference"
            }
          }
        },
        "XML": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "namespace": {
              "type": "string",
              "format": "uri"
            },
            "prefix": {
              "type": "string"
            },
            "attribute": {
              "type": "boolean",
              "default": false
            },
            "wrapped": {
              "type": "boolean",
              "default": false
            }
          },
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          }
        }
      },
      "properties": {
        "title": {
          "type": "string"
        },
        "multipleOf": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "maximum": {
          "type": "number"
        },
        "exclusiveMaximum": {
          "type": "boolean",
          "default": false
        },
        "minimum": {
          "type": "number"
        },
        "exclusiveMinimum": {
          "type": "boolean",
          "default": false
        },
        "maxLength": {
          "type": "integer",
          "minimum": 0
        },
        "minLength": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "pattern": {
          "type": "string",
          "format": "regex"
        },
        "maxItems": {
          "type": "integer",
          "minimum": 0
        },
        "minItems": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "uniqueItems": {
          "type": "boolean",
          "default": false
        },
        "maxProperties": {
          "type": "integer",
          "minimum": 0
        },
        "minProperties": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "required": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "enum": {
          "type": "array",
          "items": true,
          "minItems": 1,
          "uniqueItems": false
        },
        "type": {
          "type": "string",
          "enum": [
            "array",
            "boolean",
            "integer",
            "number",
            "object",
            "string"
          ]
        },
        "not": {
          "oneOf": [
            {
              "$ref": "#/$defs/openapiSchema_3_0"
            },
            {
              "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
            }
          ]
        },
        "allOf": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/openapiSchema_3_0"
              },
              {
                "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
              }
            ]
          }
        },
        "oneOf": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/openapiSchema_3_0"
              },
              {
                "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
              }
            ]
          }
        },
        "anyOf": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/openapiSchema_3_0"
              },
              {
                "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
              }
            ]
          }
        },
        "items": {
          "oneOf": [
            {
              "$ref": "#/$defs/openapiSchema_3_0"
            },
            {
              "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
            }
          ]
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "$ref": "#/$defs/openapiSchema_3_0"
              },
              {
                "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
              }
            ]
          }
        },
        "additionalProperties": {
          "oneOf": [
            {
              "$ref": "#/$defs/openapiSchema_3_0"
            },
            {
              "$ref": "#/$defs/openapiSchema_3_0/$defs/Reference"
            },
            {
              "type": "boolean"
            }
          ],
          "default": true
        },
        "description": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "default": true,
        "nullable": {
          "type": "boolean",
          "default": false
        },
        "discriminator": {
          "$ref": "#/$defs/openapiSchema_3_0/$defs/Discriminator"
        },
        "readOnly": {
          "type": "boolean",
          "default": false
        },
        "writeOnly": {
          "type": "boolean",
          "default": false
        },
        "example": true,
        "externalDocs": {
          "$ref": "#/$defs/openapiSchema_3_0/$defs/ExternalDocumentation"
        },
        "deprecated": {
          "type": "boolean",
          "default": false
        },
        "xml": {
          "$ref": "#/$defs/openapiSchema_3_0/$defs/XML"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-": true
      }
    },
    "avroSchema_v1": {
      "title": "Avro Schema Definition",
      "description": "Json-Schema definition for Avro AVSC files.",
      "oneOf": [
        {
          "$ref": "#/$defs/avroSchema_v1/$defs/avroSchema"
        }
      ],
      "$defs": {
        "avroSchema": {
          "title": "Avro Schema",
          "description": "Root Schema",
          "oneOf": [
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/types"
            }
          ]
        },
        "types": {
          "title": "Avro Types",
          "description": "Allowed Avro types",
          "oneOf": [
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/primitiveType"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/primitiveTypeWithMetadata"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/customTypeReference"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroRecord"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroEnum"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroArray"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroMap"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroFixed"
            },
            {
              "$ref": "#/$defs/avroSchema_v1/$defs/avroUnion"
            }
          ]
        },
        "primitiveType": {
          "title": "Primitive Type",
          "description": "Basic type primitives.",
          "type": "string",
          "enum": [
            "null",
            "boolean",
            "int",
            "long",
            "float",
            "double",
            "bytes",
            "string"
          ]
        },
        "primitiveTypeWithMetadata": {
          "title": "Primitive Type With Metadata",
          "description": "A primitive type with metadata attached.",
          "type": "object",
          "properties": {
            "type": {
              "$ref": "#/$defs/avroSchema_v1/$defs/primitiveType"
            }
          },
          "required": [
            "type"
          ]
        },
        "customTypeReference": {
          "title": "Custom Type",
          "description": "Reference to a ComplexType",
          "not": {
            "$ref": "#/$defs/avroSchema_v1/$defs/primitiveType"
          },
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$"
        },
        "avroUnion": {
          "title": "Union",
          "description": "A Union of types",
          "type": "array",
          "items": {
            "$ref": "#/$defs/avroSchema_v1/$defs/avroSchema"
          },
          "minItems": 1
        },
        "avroField": {
          "title": "Field",
          "description": "A field within a Record",
          "type": "object",
          "properties": {
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "type": {
              "$ref": "#/$defs/avroSchema_v1/$defs/types"
            },
            "doc": {
              "type": "string"
            },
            "default": true,
            "order": {
              "enum": [
                "ascending",
                "descending",
                "ignore"
              ]
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            }
          },
          "required": [
            "name",
            "type"
          ]
        },
        "avroRecord": {
          "title": "Record",
          "description": "A Record",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "record"
            },
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "namespace": {
              "$ref": "#/$defs/avroSchema_v1/$defs/namespace"
            },
            "doc": {
              "type": "string"
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            },
            "fields": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/avroField"
              }
            }
          },
          "required": [
            "type",
            "name",
            "fields"
          ]
        },
        "avroEnum": {
          "title": "Enum",
          "description": "An enumeration",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "enum"
            },
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "namespace": {
              "$ref": "#/$defs/avroSchema_v1/$defs/namespace"
            },
            "doc": {
              "type": "string"
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            },
            "symbols": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            }
          },
          "required": [
            "type",
            "name",
            "symbols"
          ]
        },
        "avroArray": {
          "title": "Array",
          "description": "An array",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "array"
            },
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "namespace": {
              "$ref": "#/$defs/avroSchema_v1/$defs/namespace"
            },
            "doc": {
              "type": "string"
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            },
            "items": {
              "$ref": "#/$defs/avroSchema_v1/$defs/types"
            }
          },
          "required": [
            "type",
            "items"
          ]
        },
        "avroMap": {
          "title": "Map",
          "description": "A map of values",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "map"
            },
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "namespace": {
              "$ref": "#/$defs/avroSchema_v1/$defs/namespace"
            },
            "doc": {
              "type": "string"
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            },
            "values": {
              "$ref": "#/$defs/avroSchema_v1/$defs/types"
            }
          },
          "required": [
            "type",
            "values"
          ]
        },
        "avroFixed": {
          "title": "Fixed",
          "description": "A fixed sized array of bytes",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "fixed"
            },
            "name": {
              "$ref": "#/$defs/avroSchema_v1/$defs/name"
            },
            "namespace": {
              "$ref": "#/$defs/avroSchema_v1/$defs/namespace"
            },
            "doc": {
              "type": "string"
            },
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/avroSchema_v1/$defs/name"
              }
            },
            "size": {
              "type": "number"
            }
          },
          "required": [
            "type",
            "name",
            "size"
          ]
        },
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
        },
        "namespace": {
          "type": "string",
          "pattern": "^([A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*)*$"
        }
      }
    },
    "components": {
      "type": "object",
      "description": "Holds a set of reusable objects for different aspects of the AsyncAPI specification. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.",
      "examples": [
        {
          "components": {
            "schemas": {
              "Category": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "format": "int64"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              "Tag": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "format": "int64"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            },
            "servers": {
              "development": {
                "url": "{stage}.gigantic-server.com:{port}",
                "description": "Development server",
                "protocol": "amqp",
                "protocolVersion": "0.9.1",
                "variables": {
                  "stage": {
                    "$ref": "#/components/serverVariables/stage"
                  },
                  "port": {
                    "$ref": "#/components/serverVariables/port"
                  }
                }
              }
            },
            "serverVariables": {
              "stage": {
                "default": "demo",
                "description": "This value is assigned by the service provider, in this example `gigantic-server.com`"
              },
              "port": {
                "enum": [
                  "8883",
                  "8884"
                ],
                "default": "8883"
              }
            },
            "channels": {
              "user/signedup": {
                "subscribe": {
                  "message": {
                    "$ref": "#/components/messages/userSignUp"
                  }
                }
              }
            },
            "messages": {
              "userSignUp": {
                "summary": "Action to sign a user up.",
                "description": "Multiline description of what this action does.\nHere you have another line.\n",
                "tags": [
                  {
                    "name": "user"
                  },
                  {
                    "name": "signup"
                  }
                ],
                "headers": {
                  "type": "object",
                  "properties": {
                    "applicationInstanceId": {
                      "description": "Unique identifier for a given instance of the publishing application",
                      "type": "string"
                    }
                  }
                },
                "payload": {
                  "type": "object",
                  "properties": {
                    "user": {
                      "$ref": "#/components/schemas/userCreate"
                    },
                    "signup": {
                      "$ref": "#/components/schemas/signup"
                    }
                  }
                }
              }
            },
            "parameters": {
              "userId": {
                "description": "Id of the user.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "correlationIds": {
              "default": {
                "description": "Default Correlation ID",
                "location": "$message.header#/correlationId"
              }
            },
            "messageTraits": {
              "commonHeaders": {
                "headers": {
                  "type": "object",
                  "properties": {
                    "my-app-header": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "additionalProperties": false,
      "properties": {
        "schemas": {
          "$ref": "#/$defs/schemas"
        },
        "servers": {
          "$ref": "#/$defs/servers"
        },
        "channels": {
          "$ref": "#/$defs/channels"
        },
        "serverVariables": {
          "$ref": "#/$defs/serverVariables"
        },
        "messages": {
          "$ref": "#/$defs/messages"
        },
        "securitySchemes": {
          "type": "object",
          "patternProperties": {
            "^[\\w0-9\\.\\-_]+$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/Reference"
                },
                {
                  "$ref": "#/$defs/SecurityScheme"
                }
              ]
            }
          }
        },
        "parameters": {
          "$ref": "#/$defs/parameters"
        },
        "correlationIds": {
          "type": "object",
          "patternProperties": {
            "^[\\w0-9\\.\\-_]+$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/Reference"
                },
                {
                  "$ref": "#/$defs/correlationId"
                }
              ]
            }
          }
        },
        "operationTraits": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/operationTrait"
          }
        },
        "messageTraits": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/messageTrait"
          }
        },
        "serverBindings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/bindingsObject"
          }
        },
        "channelBindings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/bindingsObject"
          }
        },
        "operationBindings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/bindingsObject"
          }
        },
        "messageBindings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/bindingsObject"
          }
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "schemas": {
      "type": "object",
      "description": "JSON objects describing schemas the API uses.",
      "additionalProperties": {
        "$ref": "#/$defs/schema"
      }
    },
    "messages": {
      "type": "object",
      "description": "JSON objects describing the messages being consumed and produced by the API.",
      "additionalProperties": {
        "$ref": "#/$defs/message"
      }
    },
    "SecurityScheme": {
      "description": "Defines a security scheme that can be used by the operations.",
      "oneOf": [
        {
          "$ref": "#/$defs/userPassword"
        },
        {
          "$ref": "#/$defs/apiKey"
        },
        {
          "$ref": "#/$defs/X509"
        },
        {
          "$ref": "#/$defs/symmetricEncryption"
        },
        {
          "$ref": "#/$defs/asymmetricEncryption"
        },
        {
          "$ref": "#/$defs/HTTPSecurityScheme"
        },
        {
          "$ref": "#/$defs/oauth2Flows"
        },
        {
          "$ref": "#/$defs/openIdConnect"
        },
        {
          "$ref": "#/$defs/SaslSecurityScheme"
        }
      ],
      "examples": [
        {
          "type": "userPassword"
        }
      ]
    },
    "userPassword": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme. ",
          "enum": [
            "userPassword"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "userPassword"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "apiKey": {
      "type": "object",
      "required": [
        "type",
        "in"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme.",
          "enum": [
            "apiKey"
          ]
        },
        "in": {
          "type": "string",
          "description": "The location of the API key. ",
          "enum": [
            "user",
            "password"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "apiKey",
          "in": "user"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "X509": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "X509"
          ],
          "description": "The type of the security scheme."
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "X509"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "symmetricEncryption": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme.",
          "enum": [
            "symmetricEncryption"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "symmetricEncryption"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "asymmetricEncryption": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme.",
          "enum": [
            "asymmetricEncryption"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "HTTPSecurityScheme": {
      "oneOf": [
        {
          "$ref": "#/$defs/NonBearerHTTPSecurityScheme"
        },
        {
          "$ref": "#/$defs/BearerHTTPSecurityScheme"
        },
        {
          "$ref": "#/$defs/APIKeyHTTPSecurityScheme"
        }
      ]
    },
    "NonBearerHTTPSecurityScheme": {
      "not": {
        "type": "object",
        "properties": {
          "scheme": {
            "type": "string",
            "description": "A short description for security scheme.",
            "enum": [
              "bearer"
            ]
          }
        }
      },
      "type": "object",
      "required": [
        "scheme",
        "type"
      ],
      "properties": {
        "scheme": {
          "type": "string",
          "description": "The name of the HTTP Authorization scheme to be used in the Authorization header as defined in RFC7235."
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        },
        "type": {
          "type": "string",
          "description": "The type of the security scheme. ",
          "enum": [
            "http"
          ]
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "BearerHTTPSecurityScheme": {
      "type": "object",
      "required": [
        "type",
        "scheme"
      ],
      "properties": {
        "scheme": {
          "type": "string",
          "description": "The name of the HTTP Authorization scheme to be used in the Authorization header as defined in RFC7235.",
          "enum": [
            "bearer"
          ]
        },
        "bearerFormat": {
          "type": "string",
          "description": "A hint to the client to identify how the bearer token is formatted."
        },
        "type": {
          "type": "string",
          "description": "The type of the security scheme. ",
          "enum": [
            "http"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "APIKeyHTTPSecurityScheme": {
      "type": "object",
      "required": [
        "type",
        "name",
        "in"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme. ",
          "enum": [
            "httpApiKey"
          ]
        },
        "name": {
          "type": "string",
          "description": "The name of the header, query or cookie parameter to be used."
        },
        "in": {
          "type": "string",
          "description": "The location of the API key. ",
          "enum": [
            "header",
            "query",
            "cookie"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "httpApiKey",
          "name": "api_key",
          "in": "header"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "oauth2Flows": {
      "type": "object",
      "description": "Allows configuration of the supported OAuth Flows.",
      "required": [
        "type",
        "flows"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "A short description for security scheme.",
          "enum": [
            "oauth2"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        },
        "flows": {
          "type": "object",
          "properties": {
            "implicit": {
              "description": "Configuration for the OAuth Implicit flow.",
              "allOf": [
                {
                  "$ref": "#/$defs/oauth2Flow"
                },
                {
                  "required": [
                    "authorizationUrl",
                    "scopes"
                  ]
                },
                {
                  "not": {
                    "required": [
                      "tokenUrl"
                    ]
                  }
                }
              ]
            },
            "password": {
              "description": "Configuration for the OAuth Resource Owner Protected Credentials flow.",
              "allOf": [
                {
                  "$ref": "#/$defs/oauth2Flow"
                },
                {
                  "required": [
                    "tokenUrl",
                    "scopes"
                  ]
                },
                {
                  "not": {
                    "required": [
                      "authorizationUrl"
                    ]
                  }
                }
              ]
            },
            "clientCredentials": {
              "description": "Configuration for the OAuth Client Credentials flow.",
              "allOf": [
                {
                  "$ref": "#/$defs/oauth2Flow"
                },
                {
                  "required": [
                    "tokenUrl",
                    "scopes"
                  ]
                },
                {
                  "not": {
                    "required": [
                      "authorizationUrl"
                    ]
                  }
                }
              ]
            },
            "authorizationCode": {
              "description": "Configuration for the OAuth Authorization Code flow.",
              "allOf": [
                {
                  "$ref": "#/$defs/oauth2Flow"
                },
                {
                  "required": [
                    "authorizationUrl",
                    "tokenUrl",
                    "scopes"
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "oauth2Flow": {
      "type": "object",
      "description": "Configuration details for a supported OAuth Flow",
      "properties": {
        "authorizationUrl": {
          "type": "string",
          "format": "uri",
          "description": "The authorization URL to be used for this flow. This MUST be in the form of an absolute URL."
        },
        "tokenUrl": {
          "type": "string",
          "format": "uri",
          "description": "The token URL to be used for this flow. This MUST be in the form of an absolute URL."
        },
        "refreshUrl": {
          "type": "string",
          "format": "uri",
          "description": "The URL to be used for obtaining refresh tokens. This MUST be in the form of an absolute URL."
        },
        "scopes": {
          "description": "The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it.",
          "$ref": "#/$defs/oauth2Scopes"
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "oauth2",
          "flows": {
            "implicit": {
              "authorizationUrl": "https://example.com/api/oauth/dialog",
              "scopes": {
                "write:pets": "modify pets in your account",
                "read:pets": "read your pets"
              }
            },
            "authorizationCode": {
              "authorizationUrl": "https://example.com/api/oauth/dialog",
              "tokenUrl": "https://example.com/api/oauth/token",
              "scopes": {
                "write:pets": "modify pets in your account",
                "read:pets": "read your pets"
              }
            }
          }
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "oauth2Scopes": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "openIdConnect": {
      "type": "object",
      "required": [
        "type",
        "openIdConnectUrl"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "openIdConnect"
          ]
        },
        "description": {
          "type": "string"
        },
        "openIdConnectUrl": {
          "type": "string",
          "format": "uri"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "SaslSecurityScheme": {
      "oneOf": [
        {
          "$ref": "#/$defs/SaslPlainSecurityScheme"
        },
        {
          "$ref": "#/$defs/SaslScramSecurityScheme"
        },
        {
          "$ref": "#/$defs/SaslGssapiSecurityScheme"
        }
      ]
    },
    "SaslPlainSecurityScheme": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme. Valid values",
          "enum": [
            "plain"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "scramSha512"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "SaslScramSecurityScheme": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme.",
          "enum": [
            "scramSha256",
            "scramSha512"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "scramSha512"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    },
    "SaslGssapiSecurityScheme": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the security scheme.",
          "enum": [
            "gssapi"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short description for security scheme."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "type": "scramSha512"
        }
      ],
      "patternProperties": {
        "^x-[\\w0-9\\.\\x2d_]+$": {
          "$ref": "#/$defs/specificationExtension"
        }
      }
    }
  },
  "patternProperties": {
    "^x-[\\w0-9\\.\\x2d_]+$": {
      "$ref": "#/$defs/specificationExtension"
    }
  },
  "additionalProperties": false,
  "required": [
    "asyncapi",
    "info",
    "channels"
  ]
}
