apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: keycloakrealms.keycloak.org
spec:
  group: keycloak.org
  names:
    kind: KeycloakRealm
    listKind: KeycloakRealmList
    plural: keycloakrealms
    singular: keycloakrealm
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: KeycloakRealm is the Schema for the keycloakrealms 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: KeycloakRealmSpec defines the desired state of KeycloakRealm.
            properties:
              instanceSelector:
                description: Selector for looking up Keycloak 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
              realm:
                description: Keycloak Realm REST object.
                properties:
                  accessTokenLifespan:
                    description: Access Token Lifespan
                    format: int32
                    type: integer
                  accessTokenLifespanForImplicitFlow:
                    description: Access Token Lifespan For Implicit Flow
                    format: int32
                    type: integer
                  accountTheme:
                    description: Account Theme
                    type: string
                  adminEventsDetailsEnabled:
                    description: 'Enable admin events details TODO: change to values
                      and use kubebuilder default annotation once supported'
                    type: boolean
                  adminEventsEnabled:
                    description: 'Enable events recording TODO: change to values and
                      use kubebuilder default annotation once supported'
                    type: boolean
                  adminTheme:
                    description: Admin Console Theme
                    type: string
                  authenticationFlows:
                    description: Authentication flows
                    items:
                      properties:
                        alias:
                          description: Alias
                          type: string
                        authenticationExecutions:
                          description: Authentication executions
                          items:
                            properties:
                              authenticator:
                                description: Authenticator
                                type: string
                              authenticatorConfig:
                                description: Authenticator Config
                                type: string
                              authenticatorFlow:
                                description: Authenticator flow
                                type: boolean
                              flowAlias:
                                description: Flow Alias
                                type: string
                              priority:
                                description: Priority
                                format: int32
                                type: integer
                              requirement:
                                description: Requirement [REQUIRED, OPTIONAL, ALTERNATIVE,
                                  DISABLED]
                                type: string
                              userSetupAllowed:
                                description: User setup allowed
                                type: boolean
                            type: object
                          type: array
                        builtIn:
                          description: Built in
                          type: boolean
                        description:
                          description: Description
                          type: string
                        id:
                          description: ID
                          type: string
                        providerId:
                          description: Provider ID
                          type: string
                        topLevel:
                          description: Top level
                          type: boolean
                      required:
                      - alias
                      - authenticationExecutions
                      type: object
                    type: array
                  authenticatorConfig:
                    description: Authenticator config
                    items:
                      properties:
                        alias:
                          description: Alias
                          type: string
                        config:
                          additionalProperties:
                            type: string
                          description: Config
                          type: object
                        id:
                          description: ID
                          type: string
                      required:
                      - alias
                      type: object
                    type: array
                  bruteForceProtected:
                    description: Brute Force Detection
                    type: boolean
                  clientScopeMappings:
                    additionalProperties:
                      items:
                        description: https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_scopemappingrepresentation
                        properties:
                          client:
                            description: Client
                            type: string
                          clientScope:
                            description: Client Scope
                            type: string
                          roles:
                            description: Roles
                            items:
                              type: string
                            type: array
                          self:
                            description: Self
                            type: string
                        type: object
                      type: array
                    description: Client Scope Mappings
                    type: object
                  clientScopes:
                    description: Client scopes
                    items:
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          type: object
                        description:
                          type: string
                        id:
                          type: string
                        name:
                          type: string
                        protocol:
                          type: string
                        protocolMappers:
                          description: Protocol Mappers.
                          items:
                            properties:
                              config:
                                additionalProperties:
                                  type: string
                                description: Config options.
                                type: object
                              consentRequired:
                                description: True if Consent Screen is required.
                                type: boolean
                              consentText:
                                description: Text to use for displaying Consent Screen.
                                type: string
                              id:
                                description: Protocol Mapper ID.
                                type: string
                              name:
                                description: Protocol Mapper Name.
                                type: string
                              protocol:
                                description: Protocol to use.
                                type: string
                              protocolMapper:
                                description: Protocol Mapper to use
                                type: string
                            type: object
                          type: array
                      type: object
                    type: array
                  clients:
                    description: A set of Keycloak Clients.
                    items:
                      properties:
                        access:
                          additionalProperties:
                            type: boolean
                          description: Access options.
                          type: object
                        adminUrl:
                          description: Application Admin URL.
                          type: string
                        attributes:
                          additionalProperties:
                            type: string
                          description: Client Attributes.
                          type: object
                        authorizationServicesEnabled:
                          description: True if fine-grained authorization support
                            is enabled for this client.
                          type: boolean
                        authorizationSettings:
                          description: Authorization settings for this resource server.
                          properties:
                            allowRemoteResourceManagement:
                              description: True if resources should be managed remotely
                                by the resource server.
                              type: boolean
                            clientId:
                              description: Client ID.
                              type: string
                            decisionStrategy:
                              description: The decision strategy dictates how permissions
                                are evaluated and how a final decision is obtained.
                                'Affirmative' means that at least one permission must
                                evaluate to a positive decision in order to grant
                                access to a resource and its scopes. 'Unanimous' means
                                that all permissions must evaluate to a positive decision
                                in order for the final decision to be also positive.
                              type: string
                            id:
                              description: ID.
                              type: string
                            name:
                              description: Name.
                              type: string
                            policies:
                              description: Policies.
                              items:
                                description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_policyrepresentation
                                properties:
                                  config:
                                    additionalProperties:
                                      type: string
                                    description: Config.
                                    type: object
                                  decisionStrategy:
                                    description: The decision strategy dictates how
                                      the policies associated with a given permission
                                      are evaluated and how a final decision is obtained.
                                      'Affirmative' means that at least one policy
                                      must evaluate to a positive decision in order
                                      for the final decision to be also positive.
                                      'Unanimous' means that all policies must evaluate
                                      to a positive decision in order for the final
                                      decision to be also positive. 'Consensus' means
                                      that the number of positive decisions must be
                                      greater than the number of negative decisions.
                                      If the number of positive and negative is the
                                      same, the final decision will be negative.
                                    type: string
                                  description:
                                    description: A description for this policy.
                                    type: string
                                  id:
                                    description: ID.
                                    type: string
                                  logic:
                                    description: The logic dictates how the policy
                                      decision should be made. If 'Positive', the
                                      resulting effect (permit or deny) obtained during
                                      the evaluation of this policy will be used to
                                      perform a decision. If 'Negative', the resulting
                                      effect will be negated, in other words, a permit
                                      becomes a deny and vice-versa.
                                    type: string
                                  name:
                                    description: The name of this policy.
                                    type: string
                                  owner:
                                    description: Owner.
                                    type: string
                                  policies:
                                    description: Policies.
                                    items:
                                      type: string
                                    type: array
                                  resources:
                                    description: Resources.
                                    items:
                                      type: string
                                    type: array
                                  resourcesData:
                                    description: Resources Data.
                                    items:
                                      description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_resourcerepresentation
                                      properties:
                                        _id:
                                          description: ID.
                                          type: string
                                        attributes:
                                          additionalProperties:
                                            type: string
                                          description: The attributes associated with
                                            the resource.
                                          type: object
                                        displayName:
                                          description: A unique name for this resource.
                                            The name can be used to uniquely identify
                                            a resource, useful when querying for a
                                            specific resource.
                                          type: string
                                        icon_uri:
                                          description: An URI pointing to an icon.
                                          type: string
                                        name:
                                          description: A unique name for this resource.
                                            The name can be used to uniquely identify
                                            a resource, useful when querying for a
                                            specific resource.
                                          type: string
                                        ownerManagedAccess:
                                          description: True if the access to this
                                            resource can be managed by the resource
                                            owner.
                                          type: boolean
                                        scopes:
                                          description: The scopes associated with
                                            this resource.
                                          items:
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        type:
                                          description: The type of this resource.
                                            It can be used to group different resource
                                            instances with the same type.
                                          type: string
                                        uris:
                                          description: Set of URIs which are protected
                                            by resource.
                                          items:
                                            type: string
                                          type: array
                                      type: object
                                    type: array
                                  scopes:
                                    description: Scopes.
                                    items:
                                      type: string
                                    type: array
                                  scopesData:
                                    description: Scopes Data.
                                    items:
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  type:
                                    description: Type.
                                    type: string
                                type: object
                              type: array
                            policyEnforcementMode:
                              description: The policy enforcement mode dictates how
                                policies are enforced when evaluating authorization
                                requests. 'Enforcing' means requests are denied by
                                default even when there is no policy associated with
                                a given resource. 'Permissive' means requests are
                                allowed even when there is no policy associated with
                                a given resource. 'Disabled' completely disables the
                                evaluation of policies and allows access to any resource.
                              type: string
                            resources:
                              description: Resources.
                              items:
                                description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_resourcerepresentation
                                properties:
                                  _id:
                                    description: ID.
                                    type: string
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: The attributes associated with the
                                      resource.
                                    type: object
                                  displayName:
                                    description: A unique name for this resource.
                                      The name can be used to uniquely identify a
                                      resource, useful when querying for a specific
                                      resource.
                                    type: string
                                  icon_uri:
                                    description: An URI pointing to an icon.
                                    type: string
                                  name:
                                    description: A unique name for this resource.
                                      The name can be used to uniquely identify a
                                      resource, useful when querying for a specific
                                      resource.
                                    type: string
                                  ownerManagedAccess:
                                    description: True if the access to this resource
                                      can be managed by the resource owner.
                                    type: boolean
                                  scopes:
                                    description: The scopes associated with this resource.
                                    items:
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  type:
                                    description: The type of this resource. It can
                                      be used to group different resource instances
                                      with the same type.
                                    type: string
                                  uris:
                                    description: Set of URIs which are protected by
                                      resource.
                                    items:
                                      type: string
                                    type: array
                                type: object
                              type: array
                            scopes:
                              description: Authorization Scopes.
                              items:
                                description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_scoperepresentation
                                properties:
                                  displayName:
                                    description: A unique name for this scope. The
                                      name can be used to uniquely identify a scope,
                                      useful when querying for a specific scope.
                                    type: string
                                  iconUri:
                                    description: An URI pointing to an icon.
                                    type: string
                                  id:
                                    description: ID.
                                    type: string
                                  name:
                                    description: A unique name for this scope. The
                                      name can be used to uniquely identify a scope,
                                      useful when querying for a specific scope.
                                    type: string
                                  policies:
                                    description: Policies.
                                    items:
                                      description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_policyrepresentation
                                      properties:
                                        config:
                                          additionalProperties:
                                            type: string
                                          description: Config.
                                          type: object
                                        decisionStrategy:
                                          description: The decision strategy dictates
                                            how the policies associated with a given
                                            permission are evaluated and how a final
                                            decision is obtained. 'Affirmative' means
                                            that at least one policy must evaluate
                                            to a positive decision in order for the
                                            final decision to be also positive. 'Unanimous'
                                            means that all policies must evaluate
                                            to a positive decision in order for the
                                            final decision to be also positive. 'Consensus'
                                            means that the number of positive decisions
                                            must be greater than the number of negative
                                            decisions. If the number of positive and
                                            negative is the same, the final decision
                                            will be negative.
                                          type: string
                                        description:
                                          description: A description for this policy.
                                          type: string
                                        id:
                                          description: ID.
                                          type: string
                                        logic:
                                          description: The logic dictates how the
                                            policy decision should be made. If 'Positive',
                                            the resulting effect (permit or deny)
                                            obtained during the evaluation of this
                                            policy will be used to perform a decision.
                                            If 'Negative', the resulting effect will
                                            be negated, in other words, a permit becomes
                                            a deny and vice-versa.
                                          type: string
                                        name:
                                          description: The name of this policy.
                                          type: string
                                        owner:
                                          description: Owner.
                                          type: string
                                        policies:
                                          description: Policies.
                                          items:
                                            type: string
                                          type: array
                                        resources:
                                          description: Resources.
                                          items:
                                            type: string
                                          type: array
                                        resourcesData:
                                          description: Resources Data.
                                          items:
                                            description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_resourcerepresentation
                                            properties:
                                              _id:
                                                description: ID.
                                                type: string
                                              attributes:
                                                additionalProperties:
                                                  type: string
                                                description: The attributes associated
                                                  with the resource.
                                                type: object
                                              displayName:
                                                description: A unique name for this
                                                  resource. The name can be used to
                                                  uniquely identify a resource, useful
                                                  when querying for a specific resource.
                                                type: string
                                              icon_uri:
                                                description: An URI pointing to an
                                                  icon.
                                                type: string
                                              name:
                                                description: A unique name for this
                                                  resource. The name can be used to
                                                  uniquely identify a resource, useful
                                                  when querying for a specific resource.
                                                type: string
                                              ownerManagedAccess:
                                                description: True if the access to
                                                  this resource can be managed by
                                                  the resource owner.
                                                type: boolean
                                              scopes:
                                                description: The scopes associated
                                                  with this resource.
                                                items:
                                                  x-kubernetes-preserve-unknown-fields: true
                                                type: array
                                              type:
                                                description: The type of this resource.
                                                  It can be used to group different
                                                  resource instances with the same
                                                  type.
                                                type: string
                                              uris:
                                                description: Set of URIs which are
                                                  protected by resource.
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                        scopes:
                                          description: Scopes.
                                          items:
                                            type: string
                                          type: array
                                        scopesData:
                                          description: Scopes Data.
                                          items:
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        type:
                                          description: Type.
                                          type: string
                                      type: object
                                    type: array
                                  resources:
                                    description: Resources.
                                    items:
                                      description: https://www.keycloak.org/docs-api/12.0/rest-api/index.html#_resourcerepresentation
                                      properties:
                                        _id:
                                          description: ID.
                                          type: string
                                        attributes:
                                          additionalProperties:
                                            type: string
                                          description: The attributes associated with
                                            the resource.
                                          type: object
                                        displayName:
                                          description: A unique name for this resource.
                                            The name can be used to uniquely identify
                                            a resource, useful when querying for a
                                            specific resource.
                                          type: string
                                        icon_uri:
                                          description: An URI pointing to an icon.
                                          type: string
                                        name:
                                          description: A unique name for this resource.
                                            The name can be used to uniquely identify
                                            a resource, useful when querying for a
                                            specific resource.
                                          type: string
                                        ownerManagedAccess:
                                          description: True if the access to this
                                            resource can be managed by the resource
                                            owner.
                                          type: boolean
                                        scopes:
                                          description: The scopes associated with
                                            this resource.
                                          items:
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        type:
                                          description: The type of this resource.
                                            It can be used to group different resource
                                            instances with the same type.
                                          type: string
                                        uris:
                                          description: Set of URIs which are protected
                                            by resource.
                                          items:
                                            type: string
                                          type: array
                                      type: object
                                    type: array
                                type: object
                              type: array
                          type: object
                        baseUrl:
                          description: Application base URL.
                          type: string
                        bearerOnly:
                          description: True if a client supports only Bearer Tokens.
                          type: boolean
                        clientAuthenticatorType:
                          description: What Client authentication type to use.
                          type: string
                        clientId:
                          description: Client ID.
                          type: string
                        consentRequired:
                          description: True if Consent Screen is required.
                          type: boolean
                        defaultClientScopes:
                          description: A list of default client scopes. Default client
                            scopes are always applied when issuing OpenID Connect
                            tokens or SAML assertions for this client.
                          items:
                            type: string
                          type: array
                        defaultRoles:
                          description: Default Client roles.
                          items:
                            type: string
                          type: array
                        description:
                          description: Client description.
                          type: string
                        directAccessGrantsEnabled:
                          description: True if Direct Grant is enabled.
                          type: boolean
                        enabled:
                          description: Client enabled flag.
                          type: boolean
                        frontchannelLogout:
                          description: True if this client supports Front Channel
                            logout.
                          type: boolean
                        fullScopeAllowed:
                          description: True if Full Scope is allowed.
                          type: boolean
                        id:
                          description: Client ID. If not specified, automatically
                            generated.
                          type: string
                        implicitFlowEnabled:
                          description: True if Implicit flow is enabled.
                          type: boolean
                        name:
                          description: Client name.
                          type: string
                        nodeReRegistrationTimeout:
                          description: Node registration timeout.
                          type: integer
                        notBefore:
                          description: Not Before setting.
                          type: integer
                        optionalClientScopes:
                          description: A list of optional client scopes. Optional
                            client scopes are applied when issuing tokens for this
                            client, but only when they are requested by the scope
                            parameter in the OpenID Connect authorization request.
                          items:
                            type: string
                          type: array
                        protocol:
                          description: Protocol used for this Client.
                          type: string
                        protocolMappers:
                          description: Protocol Mappers.
                          items:
                            properties:
                              config:
                                additionalProperties:
                                  type: string
                                description: Config options.
                                type: object
                              consentRequired:
                                description: True if Consent Screen is required.
                                type: boolean
                              consentText:
                                description: Text to use for displaying Consent Screen.
                                type: string
                              id:
                                description: Protocol Mapper ID.
                                type: string
                              name:
                                description: Protocol Mapper Name.
                                type: string
                              protocol:
                                description: Protocol to use.
                                type: string
                              protocolMapper:
                                description: Protocol Mapper to use
                                type: string
                            type: object
                          type: array
                        publicClient:
                          description: True if this is a public Client.
                          type: boolean
                        redirectUris:
                          description: A list of valid Redirection URLs.
                          items:
                            type: string
                          type: array
                        rootUrl:
                          description: Application root URL.
                          type: string
                        secret:
                          description: Client Secret. The Operator will automatically
                            create a Secret based on this value.
                          type: string
                        serviceAccountsEnabled:
                          description: True if Service Accounts are enabled.
                          type: boolean
                        standardFlowEnabled:
                          description: True if Standard flow is enabled.
                          type: boolean
                        surrogateAuthRequired:
                          description: Surrogate Authentication Required option.
                          type: boolean
                        useTemplateConfig:
                          description: True to use a Template Config.
                          type: boolean
                        useTemplateMappers:
                          description: True to use Template Mappers.
                          type: boolean
                        useTemplateScope:
                          description: True to use Template Scope.
                          type: boolean
                        webOrigins:
                          description: A list of valid Web Origins.
                          items:
                            type: string
                          type: array
                      required:
                      - clientId
                      type: object
                    type: array
                  defaultLocale:
                    description: Default Locale
                    type: string
                  displayName:
                    description: Realm display name.
                    type: string
                  displayNameHtml:
                    description: Realm HTML display name.
                    type: string
                  duplicateEmailsAllowed:
                    description: Duplicate emails
                    type: boolean
                  editUsernameAllowed:
                    description: Edit username
                    type: boolean
                  emailTheme:
                    description: Email Theme
                    type: string
                  enabled:
                    description: Realm enabled flag.
                    type: boolean
                  enabledEventTypes:
                    description: Enabled event types
                    items:
                      type: string
                    type: array
                  eventsEnabled:
                    description: 'Enable events recording TODO: change to values and
                      use kubebuilder default annotation once supported'
                    type: boolean
                  eventsListeners:
                    description: A set of Event Listeners.
                    items:
                      type: string
                    type: array
                  failureFactor:
                    description: Max Login Failures
                    format: int32
                    type: integer
                  id:
                    type: string
                  identityProviders:
                    description: A set of Identity Providers.
                    items:
                      properties:
                        addReadTokenRoleOnCreate:
                          description: Adds Read Token role when creating this Identity
                            Provider.
                          type: boolean
                        alias:
                          description: Identity Provider Alias.
                          type: string
                        config:
                          additionalProperties:
                            type: string
                          description: Identity Provider config.
                          type: object
                        displayName:
                          description: Identity Provider Display Name.
                          type: string
                        enabled:
                          description: Identity Provider enabled flag.
                          type: boolean
                        firstBrokerLoginFlowAlias:
                          description: Identity Provider First Broker Login Flow Alias.
                          type: string
                        internalId:
                          description: Identity Provider Internal ID.
                          type: string
                        linkOnly:
                          description: Identity Provider Link Only setting.
                          type: boolean
                        postBrokerLoginFlowAlias:
                          description: Identity Provider Post Broker Login Flow Alias.
                          type: string
                        providerId:
                          description: Identity Provider ID.
                          type: string
                        storeToken:
                          description: Identity Provider Store to Token.
                          type: boolean
                        trustEmail:
                          description: Identity Provider Trust Email.
                          type: boolean
                      type: object
                    type: array
                  internationalizationEnabled:
                    description: Internationalization Enabled
                    type: boolean
                  loginTheme:
                    description: Login Theme
                    type: string
                  loginWithEmailAllowed:
                    description: Login with email
                    type: boolean
                  maxDeltaTimeSeconds:
                    description: Failure Reset Time
                    format: int32
                    type: integer
                  maxFailureWaitSeconds:
                    description: Max Wait
                    format: int32
                    type: integer
                  minimumQuickLoginWaitSeconds:
                    description: Minimum Quick Login Wait
                    format: int32
                    type: integer
                  passwordPolicy:
                    description: Realm Password Policy
                    type: string
                  permanentLockout:
                    description: Permanent Lockout
                    type: boolean
                  quickLoginCheckMilliSeconds:
                    description: Quick Login Check Milli Seconds
                    format: int64
                    type: integer
                  realm:
                    description: Realm name.
                    type: string
                  registrationAllowed:
                    description: User registration
                    type: boolean
                  registrationEmailAsUsername:
                    description: Email as username
                    type: boolean
                  rememberMe:
                    description: Remember me
                    type: boolean
                  resetPasswordAllowed:
                    description: Forgot password
                    type: boolean
                  roles:
                    description: Roles
                    properties:
                      client:
                        additionalProperties:
                          items:
                            description: https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_rolerepresentation
                            properties:
                              attributes:
                                additionalProperties:
                                  items:
                                    type: string
                                  type: array
                                description: Role Attributes
                                type: object
                              clientRole:
                                description: Client Role
                                type: boolean
                              composite:
                                description: Composite
                                type: boolean
                              composites:
                                description: Composites
                                properties:
                                  client:
                                    additionalProperties:
                                      items:
                                        type: string
                                      type: array
                                    description: Map client => []role
                                    type: object
                                  realm:
                                    description: Realm roles
                                    items:
                                      type: string
                                    type: array
                                type: object
                              containerId:
                                description: Container Id
                                type: string
                              description:
                                description: Description
                                type: string
                              id:
                                description: Id
                                type: string
                              name:
                                description: Name
                                type: string
                            required:
                            - name
                            type: object
                          type: array
                        description: Client Roles
                        type: object
                      realm:
                        description: Realm Roles
                        items:
                          description: https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_rolerepresentation
                          properties:
                            attributes:
                              additionalProperties:
                                items:
                                  type: string
                                type: array
                              description: Role Attributes
                              type: object
                            clientRole:
                              description: Client Role
                              type: boolean
                            composite:
                              description: Composite
                              type: boolean
                            composites:
                              description: Composites
                              properties:
                                client:
                                  additionalProperties:
                                    items:
                                      type: string
                                    type: array
                                  description: Map client => []role
                                  type: object
                                realm:
                                  description: Realm roles
                                  items:
                                    type: string
                                  type: array
                              type: object
                            containerId:
                              description: Container Id
                              type: string
                            description:
                              description: Description
                              type: string
                            id:
                              description: Id
                              type: string
                            name:
                              description: Name
                              type: string
                          required:
                          - name
                          type: object
                        type: array
                    type: object
                  scopeMappings:
                    description: Scope Mappings
                    items:
                      description: https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_scopemappingrepresentation
                      properties:
                        client:
                          description: Client
                          type: string
                        clientScope:
                          description: Client Scope
                          type: string
                        roles:
                          description: Roles
                          items:
                            type: string
                          type: array
                        self:
                          description: Self
                          type: string
                      type: object
                    type: array
                  smtpServer:
                    additionalProperties:
                      type: string
                    description: Email
                    type: object
                  sslRequired:
                    description: Require SSL
                    type: string
                  supportedLocales:
                    description: Supported Locales
                    items:
                      type: string
                    type: array
                  userFederationMappers:
                    description: User federation mappers are extension points triggered
                      by the user federation at various points.
                    items:
                      description: https://www.keycloak.org/docs/11.0/server_admin/#_ldap_mappers
                        https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_userfederationmapperrepresentation
                      properties:
                        config:
                          additionalProperties:
                            type: string
                          description: User federation mapper config.
                          type: object
                        federationMapperType:
                          type: string
                        federationProviderDisplayName:
                          description: The displayName for the user federation provider
                            this mapper applies to.
                          type: string
                        id:
                          type: string
                        name:
                          type: string
                      type: object
                    type: array
                  userFederationProviders:
                    description: Point keycloak to an external user provider to validate
                      credentials or pull in identity information.
                    items:
                      description: https://www.keycloak.org/docs-api/10.0/rest-api/index.html#_userfederationproviderrepresentation
                      properties:
                        config:
                          additionalProperties:
                            type: string
                          description: User federation provider config.
                          type: object
                        displayName:
                          description: The display name of this provider instance.
                          type: string
                        fullSyncPeriod:
                          format: int32
                          type: integer
                        id:
                          description: The ID of this provider
                          type: string
                        priority:
                          description: The priority of this provider when looking
                            up users or adding a user.
                          format: int32
                          type: integer
                        providerName:
                          description: The name of the user provider, such as "ldap",
                            "kerberos" or a custom SPI.
                          type: string
                      type: object
                    type: array
                  userManagedAccessAllowed:
                    description: User Managed Access Allowed
                    type: boolean
                  users:
                    description: A set of Keycloak Users.
                    items:
                      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
                    type: array
                  verifyEmail:
                    description: Verify email
                    type: boolean
                  waitIncrementSeconds:
                    description: Wait Increment
                    format: int32
                    type: integer
                required:
                - realm
                type: object
              realmOverrides:
                description: A list of overrides to the default Realm behavior.
                items:
                  properties:
                    forFlow:
                      description: Flow to be overridden.
                      type: string
                    identityProvider:
                      description: Identity Provider to be overridden.
                      type: string
                  required:
                  - identityProvider
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              unmanaged:
                description: When set to true, this KeycloakRealm will be marked as
                  unmanaged and not be managed by this operator. It can then be used
                  for targeting purposes.
                type: boolean
            required:
            - realm
            type: object
          status:
            description: KeycloakRealmStatus defines the observed state of KeycloakRealm
            properties:
              loginURL:
                description: TODO
                type: string
              message:
                description: Human-readable message indicating details about current
                  operator phase or error.
                type: string
              phase:
                description: Current phase of the operator.
                type: string
              ready:
                description: True if all resources are in a ready state and all work
                  is done.
                type: boolean
              secondaryResources:
                additionalProperties:
                  items:
                    type: string
                  type: array
                description: 'A map of all the secondary resources types and names
                  created for this CR. e.g "Deployment": [ "DeploymentName1", "DeploymentName2"
                  ]'
                type: object
            required:
            - loginURL
            - message
            - phase
            - ready
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
