{
  "description": "Permission is the Schema for the permissions 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"
    },
    "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"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "PermissionSpec defines the desired state of Permission",
      "properties": {
        "permissions": {
          "description": "Permissions to grant to the user in the specific vhost; required property.\nSee RabbitMQ doc for more information: https://www.rabbitmq.com/access-control.html#user-management",
          "properties": {
            "configure": {
              "type": "string"
            },
            "read": {
              "type": "string"
            },
            "write": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "rabbitmqClusterReference": {
          "description": "Reference to the RabbitmqCluster that both the provided user and vhost are.\nRequired property.",
          "properties": {
            "connectionSecret": {
              "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.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                  "type": "string"
                }
              },
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "name": {
              "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.",
              "type": "string"
            },
            "namespace": {
              "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "user": {
          "description": "Name of an existing user; must provide user or userReference, else create/update will fail; cannot be updated",
          "type": "string"
        },
        "userReference": {
          "description": "Reference to an existing user.rabbitmq.com object; must provide user or userReference, else create/update will fail; cannot be updated",
          "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.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "vhost": {
          "description": "Name of an existing vhost; required property; cannot be updated",
          "type": "string"
        }
      },
      "required": [
        "permissions",
        "rabbitmqClusterReference",
        "vhost"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "PermissionStatus defines the observed state of Permission",
      "properties": {
        "conditions": {
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "The last time this Condition status changed.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Full text reason for current status of the condition.",
                "type": "string"
              },
              "reason": {
                "description": "One word, camel-case reason for current status of the condition.",
                "type": "string"
              },
              "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",
            "additionalProperties": false
          },
          "type": "array"
        },
        "observedGeneration": {
          "description": "observedGeneration is the most recent successful generation observed for this Permission. It corresponds to the\nPermission's generation, which is updated on mutation by the API Server.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
