apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: objectbucketclaims.objectbucket.io
spec:
  conversion:
    strategy: None
  group: objectbucket.io
  names:
    kind: ObjectBucketClaim
    listKind: ObjectBucketClaimList
    plural: objectbucketclaims
    shortNames:
      - obc
      - obcs
    singular: objectbucketclaim
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: StorageClass
          jsonPath: .spec.storageClassName
          name: Storage-Class
          type: string
        - description: Phase
          jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1alpha1
      schema:
        openAPIV3Schema:
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
              type: string
            spec:
              description: Specification of the desired behavior of the claim.
              properties:
                additionalConfig:
                  additionalProperties:
                    type: string
                  description: AdditionalConfig gives providers a location to set proprietary
                    config values (tenant, namespace, etc)
                  type: object
                bucketName:
                  description: BucketName (not recommended) the name of the bucket.
                    Caution! In-store bucket names may collide across namespaces.  If
                    you define the name yourself, try to make it as unique as possible.
                  type: string
                objectBucketName:
                  description: ObjectBucketName is the name of the object bucket resource.
                    This is the authoritative determination for binding.
                  type: string
                generateBucketName:
                  description: GenerateBucketName (recommended) a prefix for a bucket
                    name to be followed by a hyphen and 5 random characters. Protects
                    against in-store name collisions.
                  type: string
                storageClassName:
                  description: StorageClass names the StorageClass object representing
                    the desired provisioner and parameters
                  type: string
              required:
                - storageClassName
              type: object
            status:
              description: Most recently observed status of the claim.
              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
          type: object
      served: true
      storage: true
      subresources:
        status: {}
