AsyncAPI · Schema

AsyncAPI Operation

An AsyncAPI 3.x Operation — describes an action (send or receive) the application performs on a referenced channel. Operations are first-class in 3.0, separated from channels.

AsyncAPIEvent-Driven ArchitectureAsynchronous APIsMessage BrokersAPI SpecificationsKafkaMQTTAMQPWebSocketLinux Foundation

Properties

Name Type Description
action string The action the application performs. `send` = the application produces messages to the channel. `receive` = the application consumes messages from the channel.
channel object Reference Object pointing to the channel this operation targets. Typically `{ "$ref": "#/channels/userSignedUp" }`.
title string
summary string
description string
security array Security requirements applied to this operation.
tags array
externalDocs object
bindings object Protocol-specific operation bindings (kafka.groupId, mqtt.qos, amqp.expiration, etc.).
traits array List of operation traits merged into the operation (reusable fragments).
messages array Subset of messages from the referenced channel that this operation handles. Each item is a Reference Object pointing into the channel's messages map.
reply object Defines a request/reply pattern: the channel + messages used for the reply.
View JSON Schema on GitHub

JSON Schema

asyncapi-operation-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/async-apis/refs/heads/main/json-schema/asyncapi-operation-schema.json",
  "title": "AsyncAPI Operation",
  "description": "An AsyncAPI 3.x Operation — describes an action (send or receive) the application performs on a referenced channel. Operations are first-class in 3.0, separated from channels.",
  "type": "object",
  "required": ["action", "channel"],
  "properties": {
    "action": {
      "type": "string",
      "description": "The action the application performs. `send` = the application produces messages to the channel. `receive` = the application consumes messages from the channel.",
      "enum": ["send", "receive"]
    },
    "channel": {
      "type": "object",
      "description": "Reference Object pointing to the channel this operation targets. Typically `{ \"$ref\": \"#/channels/userSignedUp\" }`.",
      "properties": {
        "$ref": {"type": "string"}
      },
      "required": ["$ref"]
    },
    "title": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "security": {
      "type": "array",
      "description": "Security requirements applied to this operation.",
      "items": {"type": "object"}
    },
    "tags": {
      "type": "array",
      "items": {"type": "object"}
    },
    "externalDocs": {
      "type": "object"
    },
    "bindings": {
      "type": "object",
      "description": "Protocol-specific operation bindings (kafka.groupId, mqtt.qos, amqp.expiration, etc.).",
      "properties": {
        "kafka": {"type": "object"},
        "mqtt": {"type": "object"},
        "amqp": {"type": "object"},
        "ws": {"type": "object"},
        "nats": {"type": "object"},
        "http": {"type": "object"},
        "jms": {"type": "object"},
        "pulsar": {"type": "object"},
        "ibmmq": {"type": "object"}
      }
    },
    "traits": {
      "type": "array",
      "description": "List of operation traits merged into the operation (reusable fragments).",
      "items": {"type": "object"}
    },
    "messages": {
      "type": "array",
      "description": "Subset of messages from the referenced channel that this operation handles. Each item is a Reference Object pointing into the channel's messages map.",
      "items": {"type": "object"}
    },
    "reply": {
      "type": "object",
      "description": "Defines a request/reply pattern: the channel + messages used for the reply.",
      "properties": {
        "address": {"type": "object"},
        "channel": {"type": "object"},
        "messages": {"type": "array"}
      }
    }
  }
}