@asyncapi/specs
Version:
AsyncAPI schema versions
1,224 lines (1,223 loc) • 398 kB
JSON
{
"$id": "http://asyncapi.com/definitions/3.0.0/asyncapi.json",
"$schema": "http://json-schema.org/draft-07/schema",
"title": "AsyncAPI 3.0.0 schema.",
"type": "object",
"required": [
"asyncapi",
"info"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"properties": {
"asyncapi": {
"type": "string",
"const": "3.0.0",
"description": "The AsyncAPI specification version of this document."
},
"id": {
"type": "string",
"description": "A unique id representing the application.",
"format": "uri"
},
"info": {
"$ref": "http://asyncapi.com/definitions/3.0.0/info.json"
},
"servers": {
"$ref": "http://asyncapi.com/definitions/3.0.0/servers.json"
},
"defaultContentType": {
"type": "string",
"description": "Default content type to use when encoding/decoding a message's payload."
},
"channels": {
"$ref": "http://asyncapi.com/definitions/3.0.0/channels.json"
},
"operations": {
"$ref": "http://asyncapi.com/definitions/3.0.0/operations.json"
},
"components": {
"$ref": "http://asyncapi.com/definitions/3.0.0/components.json"
}
},
"definitions": {
"http://asyncapi.com/definitions/3.0.0/specificationExtension.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json",
"description": "Any property starting with x- is valid.",
"additionalProperties": true,
"additionalItems": true
},
"http://asyncapi.com/definitions/3.0.0/info.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/info.json",
"description": "The object provides metadata about the API. The metadata can be used by the clients if needed.",
"allOf": [
{
"type": "object",
"required": [
"version",
"title"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/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/3.0.0/contact.json"
},
"license": {
"$ref": "http://asyncapi.com/definitions/3.0.0/license.json"
},
"tags": {
"type": "array",
"description": "A list of tags for application API documentation control. Tags can be used for logical grouping of applications.",
"items": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/tag.json"
}
]
},
"uniqueItems": true
},
"externalDocs": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/externalDocs.json"
}
]
}
}
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/infoExtensions.json"
}
],
"examples": [
{
"title": "AsyncAPI Sample App",
"version": "1.0.1",
"description": "This is a sample app.",
"termsOfService": "https://asyncapi.org/terms/",
"contact": {
"name": "API Support",
"url": "https://www.asyncapi.org/support",
"email": "support@asyncapi.org"
},
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
},
"externalDocs": {
"description": "Find more info here",
"url": "https://www.asyncapi.org"
},
"tags": [
{
"name": "e-commerce"
}
]
}
]
},
"http://asyncapi.com/definitions/3.0.0/contact.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/contact.json",
"type": "object",
"description": "Contact information for the exposed 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/3.0.0/specificationExtension.json"
}
},
"examples": [
{
"name": "API Support",
"url": "https://www.example.com/support",
"email": "support@example.com"
}
]
},
"http://asyncapi.com/definitions/3.0.0/license.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/license.json",
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "The name of the license type. It's encouraged to use an OSI compatible license."
},
"url": {
"type": "string",
"description": "The URL pointing to the license.",
"format": "uri"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"examples": [
{
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
]
},
"http://asyncapi.com/definitions/3.0.0/Reference.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/Reference.json",
"type": "object",
"description": "A simple object to allow referencing other components in the specification, internally and externally.",
"required": [
"$ref"
],
"properties": {
"$ref": {
"description": "The reference string.",
"$ref": "http://asyncapi.com/definitions/3.0.0/ReferenceObject.json"
}
},
"examples": [
{
"$ref": "#/components/schemas/Pet"
}
]
},
"http://asyncapi.com/definitions/3.0.0/ReferenceObject.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/ReferenceObject.json",
"type": "string",
"format": "uri-reference"
},
"http://asyncapi.com/definitions/3.0.0/tag.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/tag.json",
"type": "object",
"description": "Allows adding metadata to a single tag.",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the tag."
},
"description": {
"type": "string",
"description": "A short description for the tag. CommonMark syntax can be used for rich text representation."
},
"externalDocs": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/externalDocs.json"
}
]
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"examples": [
{
"name": "user",
"description": "User-related messages"
}
]
},
"http://asyncapi.com/definitions/3.0.0/externalDocs.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/externalDocs.json",
"type": "object",
"additionalProperties": false,
"description": "Allows referencing an external resource for extended documentation.",
"required": [
"url"
],
"properties": {
"description": {
"type": "string",
"description": "A short description of the target documentation. CommonMark syntax can be used for rich text representation."
},
"url": {
"type": "string",
"description": "The URL for the target documentation. This MUST be in the form of an absolute URL.",
"format": "uri"
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"examples": [
{
"description": "Find more info here",
"url": "https://example.com"
}
]
},
"http://asyncapi.com/definitions/3.0.0/infoExtensions.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/infoExtensions.json",
"type": "object",
"description": "The object that lists all the extensions of Info",
"properties": {
"x-x": {
"$ref": "http://asyncapi.com/extensions/x/0.1.0/schema.json"
},
"x-linkedin": {
"$ref": "http://asyncapi.com/extensions/linkedin/0.1.0/schema.json"
}
}
},
"http://asyncapi.com/extensions/x/0.1.0/schema.json": {
"$id": "http://asyncapi.com/extensions/x/0.1.0/schema.json",
"type": "string",
"description": "This extension allows you to provide the Twitter username of the account representing the team/company of the API.",
"example": [
"sambhavgupta75",
"AsyncAPISpec"
]
},
"http://asyncapi.com/extensions/linkedin/0.1.0/schema.json": {
"$id": "http://asyncapi.com/extensions/linkedin/0.1.0/schema.json",
"type": "string",
"pattern": "^http(s)?://(www\\.)?linkedin\\.com.*$",
"description": "This extension allows you to provide the Linkedin profile URL of the account representing the team/company of the API.",
"example": [
"https://www.linkedin.com/company/asyncapi/",
"https://www.linkedin.com/in/sambhavgupta0705/"
]
},
"http://asyncapi.com/definitions/3.0.0/servers.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/servers.json",
"description": "An object representing multiple servers.",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/server.json"
}
]
},
"examples": [
{
"development": {
"host": "localhost:5672",
"description": "Development AMQP broker.",
"protocol": "amqp",
"protocolVersion": "0-9-1",
"tags": [
{
"name": "env:development",
"description": "This environment is meant for developers to run their own tests."
}
]
},
"staging": {
"host": "rabbitmq-staging.in.mycompany.com:5672",
"description": "RabbitMQ broker for the staging environment.",
"protocol": "amqp",
"protocolVersion": "0-9-1",
"tags": [
{
"name": "env:staging",
"description": "This environment is a replica of the production environment."
}
]
},
"production": {
"host": "rabbitmq.in.mycompany.com:5672",
"description": "RabbitMQ broker for the production environment.",
"protocol": "amqp",
"protocolVersion": "0-9-1",
"tags": [
{
"name": "env:production",
"description": "This environment is the live environment available for final users."
}
]
}
}
]
},
"http://asyncapi.com/definitions/3.0.0/server.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/server.json",
"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": [
"host",
"protocol"
],
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"properties": {
"host": {
"type": "string",
"description": "The server host name. It MAY include the port. This field supports Server Variables. Variable substitutions will be made when a variable is named in {braces}."
},
"pathname": {
"type": "string",
"description": "The path to a resource in the host. This field supports Server Variables. Variable substitutions will be made when a variable is named in {braces}."
},
"title": {
"type": "string",
"description": "A human-friendly title for the server."
},
"summary": {
"type": "string",
"description": "A brief summary of the server."
},
"description": {
"type": "string",
"description": "A longer description of the server. CommonMark is allowed."
},
"protocol": {
"type": "string",
"description": "The protocol this server supports for connection."
},
"protocolVersion": {
"type": "string",
"description": "An optional string describing the server. CommonMark syntax MAY be used for rich text representation."
},
"variables": {
"$ref": "http://asyncapi.com/definitions/3.0.0/serverVariables.json"
},
"security": {
"$ref": "http://asyncapi.com/definitions/3.0.0/securityRequirements.json"
},
"tags": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/tag.json"
}
]
},
"uniqueItems": true
},
"externalDocs": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/externalDocs.json"
}
]
},
"bindings": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/serverBindingsObject.json"
}
]
}
},
"examples": [
{
"host": "kafka.in.mycompany.com:9092",
"description": "Production Kafka broker.",
"protocol": "kafka",
"protocolVersion": "3.2"
},
{
"host": "rabbitmq.in.mycompany.com:5672",
"pathname": "/production",
"protocol": "amqp",
"description": "Production RabbitMQ broker (uses the `production` vhost)."
}
]
},
"http://asyncapi.com/definitions/3.0.0/serverVariables.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/serverVariables.json",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/serverVariable.json"
}
]
}
},
"http://asyncapi.com/definitions/3.0.0/serverVariable.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/serverVariable.json",
"type": "object",
"description": "An object representing a Server Variable for server URL template substitution.",
"additionalProperties": false,
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"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. CommonMark syntax MAY be used for rich text representation."
},
"examples": {
"type": "array",
"description": "An array of examples of the server variable.",
"items": {
"type": "string"
}
}
},
"examples": [
{
"host": "rabbitmq.in.mycompany.com:5672",
"pathname": "/{env}",
"protocol": "amqp",
"description": "RabbitMQ broker. Use the `env` variable to point to either `production` or `staging`.",
"variables": {
"env": {
"description": "Environment to connect to. It can be either `production` or `staging`.",
"enum": [
"production",
"staging"
]
}
}
}
]
},
"http://asyncapi.com/definitions/3.0.0/securityRequirements.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/securityRequirements.json",
"description": "An array representing security requirements.",
"type": "array",
"items": {
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/Reference.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/SecurityScheme.json"
}
]
}
},
"http://asyncapi.com/definitions/3.0.0/SecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/SecurityScheme.json",
"description": "Defines a security scheme that can be used by the operations.",
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/userPassword.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/apiKey.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/X509.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/symmetricEncryption.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/asymmetricEncryption.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/HTTPSecurityScheme.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/oauth2Flows.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/openIdConnect.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/SaslSecurityScheme.json"
}
],
"examples": [
{
"type": "userPassword"
}
]
},
"http://asyncapi.com/definitions/3.0.0/userPassword.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/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/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "userPassword"
}
]
},
"http://asyncapi.com/definitions/3.0.0/apiKey.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/apiKey.json",
"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. CommonMark syntax MAY be used for rich text representation."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "apiKey",
"in": "user"
}
]
},
"http://asyncapi.com/definitions/3.0.0/X509.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/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/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "X509"
}
]
},
"http://asyncapi.com/definitions/3.0.0/symmetricEncryption.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/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/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "symmetricEncryption"
}
]
},
"http://asyncapi.com/definitions/3.0.0/asymmetricEncryption.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/asymmetricEncryption.json",
"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."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false
},
"http://asyncapi.com/definitions/3.0.0/HTTPSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/HTTPSecurityScheme.json",
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/NonBearerHTTPSecurityScheme.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/BearerHTTPSecurityScheme.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/APIKeyHTTPSecurityScheme.json"
}
]
},
"http://asyncapi.com/definitions/3.0.0/NonBearerHTTPSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/NonBearerHTTPSecurityScheme.json",
"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"
]
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false
},
"http://asyncapi.com/definitions/3.0.0/BearerHTTPSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/BearerHTTPSecurityScheme.json",
"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. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes."
},
"type": {
"type": "string",
"description": "The type of the security scheme.",
"enum": [
"http"
]
},
"description": {
"type": "string",
"description": "A short description for security scheme. CommonMark syntax MAY be used for rich text representation."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false
},
"http://asyncapi.com/definitions/3.0.0/APIKeyHTTPSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/APIKeyHTTPSecurityScheme.json",
"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. CommonMark syntax MAY be used for rich text representation."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "httpApiKey",
"name": "api_key",
"in": "header"
}
]
},
"http://asyncapi.com/definitions/3.0.0/oauth2Flows.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/oauth2Flows.json",
"type": "object",
"description": "Allows configuration of the supported OAuth Flows.",
"required": [
"type",
"flows"
],
"properties": {
"type": {
"type": "string",
"description": "The type of the 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": "http://asyncapi.com/definitions/3.0.0/oauth2Flow.json"
},
{
"required": [
"authorizationUrl",
"availableScopes"
]
},
{
"not": {
"required": [
"tokenUrl"
]
}
}
]
},
"password": {
"description": "Configuration for the OAuth Resource Owner Protected Credentials flow.",
"allOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/oauth2Flow.json"
},
{
"required": [
"tokenUrl",
"availableScopes"
]
},
{
"not": {
"required": [
"authorizationUrl"
]
}
}
]
},
"clientCredentials": {
"description": "Configuration for the OAuth Client Credentials flow.",
"allOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/oauth2Flow.json"
},
{
"required": [
"tokenUrl",
"availableScopes"
]
},
{
"not": {
"required": [
"authorizationUrl"
]
}
}
]
},
"authorizationCode": {
"description": "Configuration for the OAuth Authorization Code flow.",
"allOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/oauth2Flow.json"
},
{
"required": [
"authorizationUrl",
"tokenUrl",
"availableScopes"
]
}
]
}
},
"additionalProperties": false
},
"scopes": {
"type": "array",
"description": "List of the needed scope names.",
"items": {
"type": "string"
}
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
}
},
"http://asyncapi.com/definitions/3.0.0/oauth2Flow.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/oauth2Flow.json",
"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."
},
"availableScopes": {
"$ref": "http://asyncapi.com/definitions/3.0.0/oauth2Scopes.json",
"description": "The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"authorizationUrl": "https://example.com/api/oauth/dialog",
"tokenUrl": "https://example.com/api/oauth/token",
"availableScopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
]
},
"http://asyncapi.com/definitions/3.0.0/oauth2Scopes.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/oauth2Scopes.json",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"http://asyncapi.com/definitions/3.0.0/openIdConnect.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/openIdConnect.json",
"type": "object",
"required": [
"type",
"openIdConnectUrl"
],
"properties": {
"type": {
"type": "string",
"description": "The type of the security scheme.",
"enum": [
"openIdConnect"
]
},
"description": {
"type": "string",
"description": "A short description for security scheme. CommonMark syntax MAY be used for rich text representation."
},
"openIdConnectUrl": {
"type": "string",
"format": "uri",
"description": "OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of an absolute URL."
},
"scopes": {
"type": "array",
"description": "List of the needed scope names. An empty array means no scopes are needed.",
"items": {
"type": "string"
}
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false
},
"http://asyncapi.com/definitions/3.0.0/SaslSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/SaslSecurityScheme.json",
"oneOf": [
{
"$ref": "http://asyncapi.com/definitions/3.0.0/SaslPlainSecurityScheme.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/SaslScramSecurityScheme.json"
},
{
"$ref": "http://asyncapi.com/definitions/3.0.0/SaslGssapiSecurityScheme.json"
}
]
},
"http://asyncapi.com/definitions/3.0.0/SaslPlainSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/SaslPlainSecurityScheme.json",
"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."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "scramSha512"
}
]
},
"http://asyncapi.com/definitions/3.0.0/SaslScramSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/SaslScramSecurityScheme.json",
"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."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{
"type": "scramSha512"
}
]
},
"http://asyncapi.com/definitions/3.0.0/SaslGssapiSecurityScheme.json": {
"$id": "http://asyncapi.com/definitions/3.0.0/SaslGssapiSecurityScheme.json",
"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."
}
},
"patternProperties": {
"^x-[\\w\\d\\.\\x2d_]+$": {
"$ref": "http://asyncapi.com/definitions/3.0.0/specificationExtension.json"
}
},
"additionalProperties": false,
"examples": [
{