apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cnrm.cloud.google.com/version: 0.0.0-dev
  creationTimestamp: null
  labels:
    cnrm.cloud.google.com/managed-by-kcc: "true"
    cnrm.cloud.google.com/system: "true"
  name: iampartialpolicies.iam.cnrm.cloud.google.com
spec:
  group: iam.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: IAMPartialPolicy
    listKind: IAMPartialPolicyList
    plural: iampartialpolicies
    shortNames:
    - gcpiampartialpolicy
    - gcpiampartialpolicies
    singular: iampartialpolicy
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: When 'True' the most recent reconcile of the resource succeeded
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: The reason for the value in 'Ready'
      jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Status
      type: string
    - jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
      name: Status Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: IAMPartialPolicy is the Schema for the iampartialpolicy API
        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: IAMPartialPolicySpec defines the desired state of IAMPartialPolicy
            properties:
              bindings:
                description: Optional. The list of IAM bindings managed by Config
                  Connector.
                items:
                  description: Specifies the members to bind to an IAM role.
                  properties:
                    condition:
                      description: Optional. The condition under which the binding
                        applies.
                      properties:
                        description:
                          type: string
                        expression:
                          type: string
                        title:
                          type: string
                      required:
                      - expression
                      - title
                      type: object
                    members:
                      description: Optional. The list of IAM users to be bound to
                        the role.
                      items:
                        oneOf:
                        - required:
                          - member
                        - required:
                          - memberFrom
                        properties:
                          member:
                            description: The IAM identity to be bound to the role.
                              Exactly one of 'member' or 'memberFrom' must be used.
                            type: string
                          memberFrom:
                            description: The IAM identity to be bound to the role.
                              Exactly one of 'member' or 'memberFrom' must be used,
                              and only one subfield within 'memberFrom' can be used.
                            oneOf:
                            - required:
                              - bigQueryConnectionConnectionRef
                            - required:
                              - logSinkRef
                            - required:
                              - serviceAccountRef
                            - required:
                              - serviceIdentityRef
                            - required:
                              - sqlInstanceRef
                            properties:
                              bigQueryConnectionConnectionRef:
                                description: BigQueryConnectionConnection whose service
                                  account is to be bound to the role. Use the Type
                                  field to specifie the connection type. For "spark"
                                  connetion, the service account is in `status.observedState.spark.serviceAccountID`.
                                  For "cloudSQL" connection, the service account is
                                  in `status.observedState.cloudSQL.serviceAccountID`.
                                  For "cloudResource" connection, the service account
                                  is in `status.observedState.cloudResource.serviceAccountID`.
                                properties:
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                  type:
                                    description: Type field specifies the connection
                                      type of the BigQueryConnectionConnection resource,
                                      whose service account is to be bound to the
                                      role.
                                    enum:
                                    - spark
                                    - cloudSQL
                                    - cloudResource
                                    type: string
                                required:
                                - name
                                - type
                                type: object
                              logSinkRef:
                                description: The LoggingLogSink whose writer identity
                                  (i.e. its 'status.writerIdentity') is to be bound
                                  to the role.
                                properties:
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                - name
                                type: object
                              serviceAccountRef:
                                description: The IAMServiceAccount to be bound to
                                  the role.
                                properties:
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                - name
                                type: object
                              serviceIdentityRef:
                                description: The ServiceIdentity whose service account
                                  (i.e., its 'status.email') is to be bound to the
                                  role.
                                properties:
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                - name
                                type: object
                              sqlInstanceRef:
                                description: The SQLInstance whose service account
                                  (i.e. its 'status.serviceAccountEmailAddress') is
                                  to be bound to the role.
                                properties:
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                - name
                                type: object
                            type: object
                        type: object
                      type: array
                    role:
                      description: Required. The role to bind the users to.
                      pattern: ^((projects|organizations)/[^/]+/)?roles/[\w_\.]+$
                      type: string
                  required:
                  - role
                  type: object
                type: array
              resourceRef:
                description: Immutable. Required. The GCP resource to set the IAM
                  policy on (e.g. organization, project...)
                oneOf:
                - not:
                    required:
                    - external
                  required:
                  - name
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                  required:
                  - external
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                    - required:
                      - apiVersion
                    - required:
                      - external
                properties:
                  apiVersion:
                    description: APIVersion of the referenced resource
                    type: string
                  external:
                    description: The external name of the referenced resource
                    type: string
                  kind:
                    description: Kind of the referenced resource
                    type: string
                  name:
                    type: string
                  namespace:
                    type: string
                required:
                - kind
                type: object
            required:
            - resourceRef
            type: object
          status:
            description: IAMPartialPolicyStatus defines the observed state of IAMPartialPolicy
            properties:
              allBindings:
                description: AllBindings surfaces all IAM bindings for the referenced
                  resource.
                items:
                  description: Specifies the members to bind to an IAM role.
                  properties:
                    condition:
                      description: Optional. The condition under which the binding
                        applies.
                      properties:
                        description:
                          type: string
                        expression:
                          type: string
                        title:
                          type: string
                      required:
                      - expression
                      - title
                      type: object
                    members:
                      description: Optional. The list of IAM users to be bound to
                        the role.
                      items:
                        type: string
                      type: array
                    role:
                      description: Required. The role to bind the users to.
                      pattern: ^((projects|organizations)/[^/]+/)?roles/[\w_\.]+$
                      type: string
                  required:
                  - role
                  type: object
                type: array
              conditions:
                description: Conditions represent the latest available observations
                  of the IAM policy's current state.
                items:
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about
                        last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's
                        last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True,
                        False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                type: array
              lastAppliedBindings:
                description: LastAppliedBindings is the list of IAM bindings that
                  were most recently applied by Config Connector.
                items:
                  description: Specifies the members to bind to an IAM role.
                  properties:
                    condition:
                      description: Optional. The condition under which the binding
                        applies.
                      properties:
                        description:
                          type: string
                        expression:
                          type: string
                        title:
                          type: string
                      required:
                      - expression
                      - title
                      type: object
                    members:
                      description: Optional. The list of IAM users to be bound to
                        the role.
                      items:
                        type: string
                      type: array
                    role:
                      description: Required. The role to bind the users to.
                      pattern: ^((projects|organizations)/[^/]+/)?roles/[\w_\.]+$
                      type: string
                  required:
                  - role
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration is the generation of the resource
                  that was most recently observed by the Config Connector controller.
                  If this is equal to metadata.generation, then that means that the
                  current reported status reflects the most recent desired state of
                  the resource.
                format: int64
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
