apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: keycloakusers.keycloak.org
  annotations:
    helm.sh/hook: crd-install
spec:
  group: keycloak.org
  names:
    kind: KeycloakUser
    listKind: KeycloakUserList
    plural: keycloakusers
    singular: keycloakuser
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: KeycloakUser is the Schema for the keycloakusers 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: KeycloakUserSpec defines the desired state of KeycloakUser.
              properties:
                realmSelector:
                  description: Selector for looking up KeycloakRealm Custom Resources.
                  properties:
                    matchExpressions:
                      description: matchExpressions is a list of label selector requirements.
                        The requirements are ANDed.
                      items:
                        description: A label selector requirement is a selector that
                          contains values, a key, and an operator that relates the key
                          and values.
                        properties:
                          key:
                            description: key is the label key that the selector applies
                              to.
                            type: string
                          operator:
                            description: operator represents a key's relationship to
                              a set of values. Valid operators are In, NotIn, Exists
                              and DoesNotExist.
                            type: string
                          values:
                            description: values is an array of string values. If the
                              operator is In or NotIn, the values array must be non-empty.
                              If the operator is Exists or DoesNotExist, the values
                              array must be empty. This array is replaced during a strategic
                              merge patch.
                            items:
                              type: string
                            type: array
                        required:
                          - key
                          - operator
                        type: object
                      type: array
                    matchLabels:
                      additionalProperties:
                        type: string
                      description: matchLabels is a map of {key,value} pairs. A single
                        {key,value} in the matchLabels map is equivalent to an element
                        of matchExpressions, whose key field is "key", the operator
                        is "In", and the values array contains only "value". The requirements
                        are ANDed.
                      type: object
                  type: object
                user:
                  description: Keycloak User REST object.
                  properties:
                    attributes:
                      additionalProperties:
                        items:
                          type: string
                        type: array
                      description: A set of Attributes.
                      type: object
                    clientRoles:
                      additionalProperties:
                        items:
                          type: string
                        type: array
                      description: A set of Client Roles.
                      type: object
                    credentials:
                      description: A set of Credentials.
                      items:
                        properties:
                          temporary:
                            description: True if this credential object is temporary.
                            type: boolean
                          type:
                            description: Credential Type.
                            type: string
                          value:
                            description: Credential Value.
                            type: string
                        type: object
                      type: array
                    email:
                      description: Email.
                      type: string
                    emailVerified:
                      description: True if email has already been verified.
                      type: boolean
                    enabled:
                      description: User enabled flag.
                      type: boolean
                    federatedIdentities:
                      description: A set of Federated Identities.
                      items:
                        properties:
                          identityProvider:
                            description: Federated Identity Provider.
                            type: string
                          userId:
                            description: Federated Identity User ID.
                            type: string
                          userName:
                            description: Federated Identity User Name.
                            type: string
                        type: object
                      type: array
                    firstName:
                      description: First Name.
                      type: string
                    groups:
                      description: A set of Groups.
                      items:
                        type: string
                      type: array
                    id:
                      description: User ID.
                      type: string
                    lastName:
                      description: Last Name.
                      type: string
                    realmRoles:
                      description: A set of Realm Roles.
                      items:
                        type: string
                      type: array
                    requiredActions:
                      description: A set of Required Actions.
                      items:
                        type: string
                      type: array
                    username:
                      description: User Name.
                      type: string
                  type: object
              required:
                - user
              type: object
            status:
              description: KeycloakUserStatus defines the observed state of KeycloakUser.
              properties:
                message:
                  description: Human-readable message indicating details about current
                    operator phase or error.
                  type: string
                phase:
                  description: Current phase of the operator.
                  type: string
              required:
                - message
                - phase
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}