{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://asyncapi.com/definitions/3.1.0/operationTrait.json",
  "description": "Describes a trait that MAY be applied to an Operation Object. This object MAY contain any property from the Operation Object, except the action, channel and traits ones.",
  "type": "object",
  "properties": {
    "title": {
      "description": "A human-friendly title for the operation.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/title"
    },
    "description": {
      "description": "A verbose explanation of the operation. CommonMark syntax can be used for rich text representation.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/description"
    },
    "bindings": {
      "description": "A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation.",
      "oneOf": [
        {
          "$ref": "http://asyncapi.com/definitions/3.1.0/Reference.json"
        },
        {
          "$ref": "http://asyncapi.com/definitions/3.1.0/operationBindingsObject.json"
        }
      ]
    },
    "externalDocs": {
      "description": "Additional external documentation for this operation.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/externalDocs"
    },
    "security": {
      "description": "A declaration of which security schemes are associated with this operation. Only one of the security scheme objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/security"
    },
    "summary": {
      "description": "A short summary of what the operation is about.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/summary"
    },
    "tags": {
      "description": "A list of tags for logical grouping and categorization of operations.",
      "$ref": "http://asyncapi.com/definitions/3.1.0/operation.json#/properties/tags"
    }
  },
  "patternProperties": {
    "^x-[\\w\\d\\.\\x2d_]+$": {
      "$ref": "http://asyncapi.com/definitions/3.1.0/specificationExtension.json"
    }
  },
  "additionalProperties": false,
  "example": {
    "$ref": "http://asyncapi.com/examples/3.1.0/operationTrait.json"
  }
}
