{
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "AMQP 0-9-1 Operation Binding Object",
    "description": "This object contains information about the operation representation in AMQP.\nSee https://github.com/asyncapi/bindings/tree/master/amqp#operation-binding-object.",
    "type": "object",
    "properties": {
        "expiration": {
            "description": "TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero. Applies to Publish, Subscribe.",
            "type": "integer",
            "minimum": 0
        },
        "userId": {
            "description": "Identifies the user who has sent the message. Applies to Publish, Subscribe.",
            "type": "string"
        },
        "cc": {
            "description": "The routing keys the message should be routed to at the time of publishing. Applies to Publish, Subscribe.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "priority": {
            "description": "A priority for the message. Applies to Publish, Subscribe.",
            "type": "integer"
        },
        "deliveryMode": {
            "description": "Delivery mode of the message. Its value MUST be either 1 (transient) or 2 (persistent). Applies to Publish, Subscribe.",
            "type": "integer",
            "oneOf": [
                {
                    "title": "Transient",
                    "const": 1
                },
                {
                    "title": "Persistent",
                    "const": 2
                }
            ]
        },
        "mandatory": {
            "description": "Whether the message is mandatory or not. Applies to Publish.",
            "type": "boolean"
        },
        "bcc": {
            "description": "Like cc but consumers will not receive this information. Applies to Publish.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "replyTo": {
            "description": "Name of the queue where the consumer should send the response. Applies to Publish, Subscribe.",
            "type": "string"
        },
        "timestamp": {
            "description": "Whether the message should include a timestamp or not. Applies to Publish, Subscribe.",
            "type": "boolean"
        },
        "ack": {
            "description": "Whether the consumer should ack the message or not. Applies to Subscribe.",
            "type": "boolean"
        },
        "bindingVersion": {
            "description": "The version of this binding. If omitted, \"latest\" MUST be assumed. Applies to Publish, Subscribe.",
            "type": "string",
            "enum": [
                "0.1.0",
                "latest"
            ]
        }
    },
    "additionalProperties": false
}