---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.8.0
  creationTimestamp: null
  name: buckets.storage.gcp.crossplane.io
spec:
  group: storage.gcp.crossplane.io
  names:
    categories:
    - crossplane
    - managed
    - gcp
    kind: Bucket
    listKind: BucketList
    plural: buckets
    singular: bucket
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: READY
      type: string
    - jsonPath: .status.conditions[?(@.type=='Synced')].status
      name: SYNCED
      type: string
    - jsonPath: .spec.storageClass
      name: STORAGE_CLASS
      type: string
    - jsonPath: .spec.location
      name: LOCATION
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: A Bucket is a managed resource that represents a Google Cloud
          Storage bucket.
        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/sig-architecture/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/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: A BucketSpec defines the desired state of a Bucket.
            properties:
              acl:
                description: ACL is the list of access control rules on the bucket.
                items:
                  description: ACLRule represents a grant for a role to an entity
                    (user, group or team) for a Google Cloud Storage object or bucket.
                  properties:
                    domain:
                      description: The domain associated with the entity, if any.
                      type: string
                    email:
                      description: The email address associated with the entity, if
                        any.
                      type: string
                    entity:
                      description: "Entity refers to a user or group. They are sometimes
                        referred to as grantees. It could be in the form of: \"user-<userId>\",
                        \"user-<email>\", \"group-<groupId>\", \"group-<email>\",
                        \"domain-<domain>\" and \"project-team-<projectId>\". \n Or
                        one of the predefined constants: AllUsers, AllAuthenticatedUsers."
                      type: string
                    entityId:
                      description: EntityID is the ID for the entity, if any.
                      type: string
                    projectTeam:
                      description: ProjectTeam that is associated with the entity,
                        if any.
                      properties:
                        projectNumber:
                          description: ProjectNumber is the number of the project.
                          type: string
                        team:
                          description: 'The team. Acceptable values are: "editors",
                            "owners" or "viewers"'
                          enum:
                          - editors
                          - owners
                          - viewers
                          type: string
                      type: object
                    role:
                      description: Role is the access permission for the entity. Valid
                        values are "OWNER", "READER" and "WRITER"
                      enum:
                      - OWNER
                      - READER
                      - WRITER
                      type: string
                  type: object
                type: array
              bucketPolicyOnly:
                description: BucketPolicyOnly configures access checks to use only
                  bucket-level IAM policies.
                properties:
                  enabled:
                    description: Enabled specifies whether access checks use only
                      bucket-level IAM policies. Enabled may be disabled until the
                      locked time.
                    type: boolean
                  lockedTime:
                    description: LockedTime specifies the deadline for changing Enabled
                      from true to false.
                    format: date-time
                    type: string
                type: object
              cors:
                description: The bucket's Cross-Origin Resource Sharing (CORS) configuration.
                items:
                  description: CORS is the bucket's Cross-Origin Resource Sharing
                    (CORS) configuration.
                  properties:
                    maxAge:
                      description: MaxAge is the value to return in the Access-Control-Max-Age
                        header used in preflight responses.
                      type: string
                    methods:
                      description: 'Methods is the list of HTTP methods on which to
                        include CORS response headers, (GET, OPTIONS, POST, etc) Note:
                        "*" is permitted in the list of methods, and means "any method".'
                      items:
                        type: string
                      type: array
                    origins:
                      description: 'Origins is the list of Origins eligible to receive
                        CORS response headers. Note: "*" is permitted in the list
                        of origins, and means "any Origin".'
                      items:
                        type: string
                      type: array
                    responseHeaders:
                      description: ResponseHeaders is the list of HTTP headers other
                        than the simple response headers to give permission for the
                        user-agent to share across domains.
                      items:
                        type: string
                      type: array
                  type: object
                type: array
              defaultEventBasedHold:
                description: DefaultEventBasedHold is the default value for event-based
                  hold on newly created objects in this bucket. It defaults to false.
                type: boolean
              defaultObjectAcl:
                description: DefaultObjectACL is the list of access controls to apply
                  to new objects when no object ACL is provided.
                items:
                  description: ACLRule represents a grant for a role to an entity
                    (user, group or team) for a Google Cloud Storage object or bucket.
                  properties:
                    domain:
                      description: The domain associated with the entity, if any.
                      type: string
                    email:
                      description: The email address associated with the entity, if
                        any.
                      type: string
                    entity:
                      description: "Entity refers to a user or group. They are sometimes
                        referred to as grantees. It could be in the form of: \"user-<userId>\",
                        \"user-<email>\", \"group-<groupId>\", \"group-<email>\",
                        \"domain-<domain>\" and \"project-team-<projectId>\". \n Or
                        one of the predefined constants: AllUsers, AllAuthenticatedUsers."
                      type: string
                    entityId:
                      description: EntityID is the ID for the entity, if any.
                      type: string
                    projectTeam:
                      description: ProjectTeam that is associated with the entity,
                        if any.
                      properties:
                        projectNumber:
                          description: ProjectNumber is the number of the project.
                          type: string
                        team:
                          description: 'The team. Acceptable values are: "editors",
                            "owners" or "viewers"'
                          enum:
                          - editors
                          - owners
                          - viewers
                          type: string
                      type: object
                    role:
                      description: Role is the access permission for the entity. Valid
                        values are "OWNER", "READER" and "WRITER"
                      enum:
                      - OWNER
                      - READER
                      - WRITER
                      type: string
                  type: object
                type: array
              deletionPolicy:
                default: Delete
                description: DeletionPolicy specifies what will happen to the underlying
                  external when this managed resource is deleted - either "Delete"
                  or "Orphan" the external resource.
                enum:
                - Orphan
                - Delete
                type: string
              encryption:
                description: The encryption configuration used by default for newly
                  inserted objects.
                properties:
                  defaultKmsKeyName:
                    description: A Cloud KMS key name, in the form projects/P/locations/L/keyRings/R/cryptoKeys/K,
                      that will be used to encrypt objects inserted into this bucket,
                      if no encryption method is specified. The key's location must
                      be the same as the bucket's.
                    type: string
                type: object
              labels:
                additionalProperties:
                  type: string
                description: Labels are the bucket's labels.
                type: object
              lifecycle:
                description: Lifecycle is the lifecycle configuration for objects
                  in the bucket.
                properties:
                  rules:
                    items:
                      description: "LifecycleRule is a lifecycle configuration rule.
                        \n When all the configured conditions are met by an object
                        in the bucket, the configured action will automatically be
                        taken on that object."
                      properties:
                        action:
                          description: Action is the action to take when all of the
                            associated conditions are met.
                          properties:
                            storageClass:
                              description: StorageClass is the storage class to set
                                on matching objects if the Action is "SetStorageClass".
                              type: string
                            type:
                              description: "Type is the type of action to take on
                                matching objects. \n Acceptable values are \"Delete\"
                                to delete matching objects and \"SetStorageClass\"
                                to set the storage class defined in StorageClass on
                                matching objects."
                              type: string
                          type: object
                        condition:
                          description: Condition is the set of conditions that must
                            be met for the associated action to be taken.
                          properties:
                            ageInDays:
                              description: AgeInDays is the age of the object in days.
                              format: int64
                              type: integer
                            createdBefore:
                              description: "CreatedBefore is the time the object was
                                created. \n This condition is satisfied when an object
                                is created before midnight of the specified date in
                                UTC."
                              format: date-time
                              type: string
                            liveness:
                              description: Liveness specifies the object's liveness.
                                Relevant only for versioned objects
                              type: integer
                            matchesStorageClasses:
                              description: "MatchesStorageClasses is the condition
                                matching the object's storage class. \n Values include
                                \"MULTI_REGIONAL\", \"REGIONAL\", \"NEARLINE\", \"COLDLINE\",
                                \"STANDARD\", and \"DURABLE_REDUCED_AVAILABILITY\"."
                              items:
                                type: string
                              type: array
                            numNewerVersions:
                              description: "NumNewerVersions is the condition matching
                                objects with a number of newer versions. \n If the
                                value is N, this condition is satisfied when there
                                are at least N versions (including the live version)
                                newer than this version of the object."
                              format: int64
                              type: integer
                          type: object
                      type: object
                    type: array
                type: object
              location:
                description: Location is the location of the bucket. It defaults to
                  "US".
                type: string
              logging:
                description: The logging configuration.
                properties:
                  logBucket:
                    description: The destination bucket where the current bucket's
                      logs should be placed.
                    type: string
                  logObjectPrefix:
                    description: A prefix for log object names.
                    type: string
                type: object
              predefinedAcl:
                description: If not empty, applies a predefined set of access controls.
                  It should be set only when creating a bucket. It is always empty
                  for BucketAttrs returned from the service. See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
                  for valid values.
                type: string
              predefinedCefaultObjectAcl:
                description: If not empty, applies a predefined set of default object
                  access controls. It should be set only when creating a bucket. It
                  is always empty for BucketAttrs returned from the service. See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
                  for valid values.
                type: string
              providerConfigRef:
                default:
                  name: default
                description: ProviderConfigReference specifies how the provider that
                  will be used to create, observe, update, and delete this managed
                  resource should be configured.
                properties:
                  name:
                    description: Name of the referenced object.
                    type: string
                required:
                - name
                type: object
              providerRef:
                description: 'ProviderReference specifies the provider that will be
                  used to create, observe, update, and delete this managed resource.
                  Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`'
                properties:
                  name:
                    description: Name of the referenced object.
                    type: string
                required:
                - name
                type: object
              publishConnectionDetailsTo:
                description: PublishConnectionDetailsTo specifies the connection secret
                  config which contains a name, metadata and a reference to secret
                  store config to which any connection details for this managed resource
                  should be written. Connection details frequently include the endpoint,
                  username, and password required to connect to the managed resource.
                properties:
                  configRef:
                    default:
                      name: default
                    description: SecretStoreConfigRef specifies which secret store
                      config should be used for this ConnectionSecret.
                    properties:
                      name:
                        description: Name of the referenced object.
                        type: string
                    required:
                    - name
                    type: object
                  metadata:
                    description: Metadata is the metadata for connection secret.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: Annotations are the annotations to be added to
                          connection secret. - For Kubernetes secrets, this will be
                          used as "metadata.annotations". - It is up to Secret Store
                          implementation for others store types.
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: Labels are the labels/tags to be added to connection
                          secret. - For Kubernetes secrets, this will be used as "metadata.labels".
                          - It is up to Secret Store implementation for others store
                          types.
                        type: object
                      type:
                        description: Type is the SecretType for the connection secret.
                          - Only valid for Kubernetes Secret Stores.
                        type: string
                    type: object
                  name:
                    description: Name is the name of the connection secret.
                    type: string
                required:
                - name
                type: object
              requesterPays:
                description: RequesterPays reports whether the bucket is a Requester
                  Pays bucket. Clients performing operations on Requester Pays buckets
                  must provide a user project (see BucketHandle.UserProject), which
                  will be billed for the operations.
                type: boolean
              retentionPolicy:
                description: "Retention policy enforces a minimum retention time for
                  all objects contained in the bucket. A RetentionPolicy of nil implies
                  the bucket has no minimum data retention. \n This feature is in
                  private alpha release. It is not currently available to most customers.
                  It might be changed in backwards-incompatible ways and is not subject
                  to any SLA or deprecation policy."
                properties:
                  retentionPeriodSeconds:
                    description: RetentionPeriod specifies the duration value in seconds
                      that objects need to be retained. Retention duration must be
                      greater than zero and less than 100 years. Note that enforcement
                      of retention periods less than a day is not guaranteed. Such
                      periods should only be used for testing purposes.
                    maximum: 3155673600
                    minimum: 0
                    type: integer
                type: object
              storageClass:
                description: StorageClass is the default storage class of the bucket.
                  This defines how objects in the bucket are stored and determines
                  the SLA and the cost of storage. Typical values are "MULTI_REGIONAL",
                  "REGIONAL", "NEARLINE", "COLDLINE", "STANDARD" and "DURABLE_REDUCED_AVAILABILITY".
                  Defaults to "STANDARD", which is equivalent to "MULTI_REGIONAL"
                  or "REGIONAL" depending on the bucket's location settings.
                enum:
                - MULTI_REGIONAL
                - REGIONAL
                - NEARLINE
                - COLDLINE
                - STANDARD
                - DURABLE_REDUCED_AVAILABILITY
                type: string
              versioningEnabled:
                description: VersioningEnabled reports whether this bucket has versioning
                  enabled.
                type: boolean
              website:
                description: The website configuration.
                properties:
                  mainPageSuffix:
                    description: If the requested object path is missing, the service
                      will ensure the path has a trailing '/', append this suffix,
                      and attempt to retrieve the resulting object. This allows the
                      creation of index.html objects to represent directory pages.
                    type: string
                  notFoundPage:
                    description: If the requested object path is missing, and any
                      mainPageSuffix object is missing, if applicable, the service
                      will return the named object from this bucket as the content
                      for a 404 Not Found result.
                    type: string
                type: object
              writeConnectionSecretToRef:
                description: WriteConnectionSecretToReference specifies the namespace
                  and name of a Secret to which any connection details for this managed
                  resource should be written. Connection details frequently include
                  the endpoint, username, and password required to connect to the
                  managed resource. This field is planned to be replaced in a future
                  release in favor of PublishConnectionDetailsTo. Currently, both
                  could be set independently and connection details would be published
                  to both without affecting each other.
                properties:
                  name:
                    description: Name of the secret.
                    type: string
                  namespace:
                    description: Namespace of the secret.
                    type: string
                required:
                - name
                - namespace
                type: object
            type: object
          status:
            description: A BucketStatus represents the observed state of a Bucket.
            properties:
              attributes:
                description: BucketOutputAttrs represent the subset of metadata for
                  a Google Cloud Storage bucket limited to output (read-only) fields.
                properties:
                  bucketPolicyOnly:
                    description: BucketPolicyOnly configures access checks to use
                      only bucket-level IAM policies.
                    properties:
                      enabled:
                        description: Enabled specifies whether access checks use only
                          bucket-level IAM policies. Enabled may be disabled until
                          the locked time.
                        type: boolean
                      lockedTime:
                        description: LockedTime specifies the deadline for changing
                          Enabled from true to false.
                        format: date-time
                        type: string
                    type: object
                  created:
                    description: Created is the creation time of the bucket.
                    format: date-time
                    type: string
                  retentionPolicy:
                    description: "Retention policy enforces a minimum retention time
                      for all objects contained in the bucket. A RetentionPolicy of
                      nil implies the bucket has no minimum data retention. \n This
                      feature is in private alpha release. It is not currently available
                      to most customers. It might be changed in backwards-incompatible
                      ways and is not subject to any SLA or deprecation policy."
                    properties:
                      effectiveTime:
                        description: EffectiveTime is the time from which the policy
                          was enforced and effective.
                        format: date-time
                        type: string
                      isLocked:
                        description: IsLocked describes whether the bucket is locked.
                          Once locked, an object retention policy cannot be modified.
                        type: boolean
                    type: object
                type: object
              conditions:
                description: Conditions of the resource.
                items:
                  description: A Condition that may apply to a resource.
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the last time this condition
                        transitioned from one status to another.
                      format: date-time
                      type: string
                    message:
                      description: A Message containing details about this condition's
                        last transition from one status to another, if any.
                      type: string
                    reason:
                      description: A Reason for this condition's last transition from
                        one status to another.
                      type: string
                    status:
                      description: Status of this condition; is it currently True,
                        False, or Unknown?
                      type: string
                    type:
                      description: Type of this condition. At most one of each condition
                        type may apply to a resource at any point in time.
                      type: string
                  required:
                  - lastTransitionTime
                  - reason
                  - status
                  - type
                  type: object
                type: array
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
