{
  "description": "Shovel is the Schema for the shovels API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "ShovelSpec defines the desired state of Shovel\nFor how to configure Shovel, see: https://www.rabbitmq.com/shovel.html.",
      "properties": {
        "ackMode": {
          "enum": [
            "on-confirm",
            "on-publish",
            "no-ack"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "addForwardHeaders": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "deleteAfter": {
          "type": [
            "string",
            "null"
          ]
        },
        "deletionPolicy": {
          "default": "delete",
          "description": "DeletionPolicy defines the behavior of shovel in the RabbitMQ cluster when the corresponding custom resource is deleted.\nCan be set to 'delete' or 'retain'. Default is 'delete'.",
          "enum": [
            "delete",
            "retain"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "destAddForwardHeaders": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "destAddTimestampHeader": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "destAddress": {
          "description": "amqp10 configuration; required if destProtocol is amqp10",
          "type": [
            "string",
            "null"
          ]
        },
        "destApplicationProperties": {
          "description": "amqp10 configuration",
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "destExchange": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "destExchangeKey": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "destMessageAnnotations": {
          "description": "amqp10 configuration",
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "destProperties": {
          "description": "amqp10 configuration",
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "destProtocol": {
          "enum": [
            "amqp091",
            "amqp10"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "destPublishProperties": {
          "description": "amqp091 configuration",
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "destQueue": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "destQueueArgs": {
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "name": {
          "description": "Required property; cannot be updated",
          "type": "string"
        },
        "prefetchCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "rabbitmqClusterReference": {
          "additionalProperties": false,
          "description": "Reference to the RabbitmqCluster that this Shovel will be created in.\nRequired property.",
          "properties": {
            "connectionSecret": {
              "additionalProperties": false,
              "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.",
              "properties": {
                "name": {
                  "default": "",
                  "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ],
              "x-kubernetes-map-type": "atomic"
            },
            "name": {
              "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.",
              "type": [
                "string",
                "null"
              ]
            },
            "namespace": {
              "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": "object"
        },
        "reconnectDelay": {
          "type": [
            "integer",
            "null"
          ]
        },
        "srcAddress": {
          "description": "amqp10 configuration; required if srcProtocol is amqp10",
          "type": [
            "string",
            "null"
          ]
        },
        "srcConsumerArgs": {
          "description": "amqp091 configuration",
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "srcDeleteAfter": {
          "type": [
            "string",
            "null"
          ]
        },
        "srcExchange": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "srcExchangeKey": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "srcPrefetchCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "srcProtocol": {
          "enum": [
            "amqp091",
            "amqp10"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "srcQueue": {
          "description": "amqp091 configuration",
          "type": [
            "string",
            "null"
          ]
        },
        "srcQueueArgs": {
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-preserve-unknown-fields": true
        },
        "uriSecret": {
          "additionalProperties": false,
          "description": "Secret contains the AMQP URI(s) to configure Shovel destination and source.\nThe Secret must contain the key `destUri` and `srcUri` or operator will error.\nBoth fields should be one or multiple uris separated by ','.\nRequired property.",
          "properties": {
            "name": {
              "default": "",
              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic"
        },
        "vhost": {
          "default": "/",
          "description": "Default to vhost '/'; cannot be updated",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name",
        "rabbitmqClusterReference",
        "uriSecret"
      ],
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "ShovelStatus defines the observed state of Shovel",
      "properties": {
        "conditions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "lastTransitionTime": {
                "description": "The last time this Condition status changed.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "message": {
                "description": "Full text reason for current status of the condition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "description": "One word, camel-case reason for current status of the condition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "description": "True, False, or Unknown",
                "type": "string"
              },
              "type": {
                "description": "Type indicates the scope of the custom resource status addressed by the condition.",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "observedGeneration": {
          "description": "observedGeneration is the most recent successful generation observed for this Shovel. It corresponds to the\nShovel's generation, which is updated on mutation by the API Server.",
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}