{
  "description": "ObjectBucketClaim is the Schema for the objectbucketclaims 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": "ObjectBucketClaimSpec defines the desired state of ObjectBucketClaim",
      "properties": {
        "additionalConfig": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "AdditionalConfig gives providers a location to set\nproprietary config values (tenant, namespace, etc)",
          "type": "object"
        },
        "bucketName": {
          "description": "BucketName (not recommended) the name of the bucket.  Caution!\nIn-store bucket names may collide across namespaces.  If you define\nthe name yourself, try to make it as unique as possible.",
          "type": "string"
        },
        "generateBucketName": {
          "description": "GenerateBucketName (recommended) a prefix for a bucket name to be\nfollowed by a hyphen and 5 random characters. Protects against\nin-store name collisions.",
          "type": "string"
        },
        "objectBucketName": {
          "description": "ObjectBucketName is the name of the object bucket resource. This is the authoritative\ndetermination for binding.",
          "type": "string"
        },
        "storageClassName": {
          "description": "StorageClass names the StorageClass object representing the desired provisioner and parameters",
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "storageClassName"
      ],
      "type": "object",
      "x-kubernetes-validations": [
        {
          "message": "bucketName is immutable once set",
          "rule": "!has(oldSelf.bucketName) || oldSelf.bucketName == \"\" || self.bucketName == oldSelf.bucketName"
        },
        {
          "message": "generateBucketName is immutable once set",
          "rule": "!has(oldSelf.generateBucketName) || oldSelf.generateBucketName == \"\" || self.generateBucketName == oldSelf.generateBucketName"
        }
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "ObjectBucketClaimStatus defines the observed state of ObjectBucketClaim",
      "properties": {
        "phase": {
          "description": "ObjectBucketClaimStatusPhase is set by the controller to save the state of the provisioning process.",
          "enum": [
            "Pending",
            "Bound",
            "Released",
            "Failed"
          ],
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
