# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs
from ._inputs import *

__all__ = ['ClientArgs', 'Client']

@pulumi.input_type
class ClientArgs:
    def __init__(__self__, *,
                 access_type: pulumi.Input[str],
                 client_id: pulumi.Input[str],
                 realm_id: pulumi.Input[str],
                 access_token_lifespan: Optional[pulumi.Input[str]] = None,
                 admin_url: Optional[pulumi.Input[str]] = None,
                 authentication_flow_binding_overrides: Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']] = None,
                 authorization: Optional[pulumi.Input['ClientAuthorizationArgs']] = None,
                 backchannel_logout_revoke_offline_sessions: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_session_required: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 base_url: Optional[pulumi.Input[str]] = None,
                 client_authenticator_type: Optional[pulumi.Input[str]] = None,
                 client_offline_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_offline_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 client_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 consent_required: Optional[pulumi.Input[bool]] = None,
                 consent_screen_text: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 direct_access_grants_enabled: Optional[pulumi.Input[bool]] = None,
                 display_on_consent_screen: Optional[pulumi.Input[bool]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 exclude_session_state_from_auth_response: Optional[pulumi.Input[bool]] = None,
                 extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 frontchannel_logout_enabled: Optional[pulumi.Input[bool]] = None,
                 frontchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 full_scope_allowed: Optional[pulumi.Input[bool]] = None,
                 implicit_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 import_: Optional[pulumi.Input[bool]] = None,
                 login_theme: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 oauth2_device_authorization_grant_enabled: Optional[pulumi.Input[bool]] = None,
                 oauth2_device_code_lifespan: Optional[pulumi.Input[str]] = None,
                 oauth2_device_polling_interval: Optional[pulumi.Input[str]] = None,
                 pkce_code_challenge_method: Optional[pulumi.Input[str]] = None,
                 root_url: Optional[pulumi.Input[str]] = None,
                 service_accounts_enabled: Optional[pulumi.Input[bool]] = None,
                 standard_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens_client_credentials: Optional[pulumi.Input[bool]] = None,
                 valid_post_logout_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 valid_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 web_origins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        The set of arguments for constructing a Client resource.
        """
        pulumi.set(__self__, "access_type", access_type)
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "realm_id", realm_id)
        if access_token_lifespan is not None:
            pulumi.set(__self__, "access_token_lifespan", access_token_lifespan)
        if admin_url is not None:
            pulumi.set(__self__, "admin_url", admin_url)
        if authentication_flow_binding_overrides is not None:
            pulumi.set(__self__, "authentication_flow_binding_overrides", authentication_flow_binding_overrides)
        if authorization is not None:
            pulumi.set(__self__, "authorization", authorization)
        if backchannel_logout_revoke_offline_sessions is not None:
            pulumi.set(__self__, "backchannel_logout_revoke_offline_sessions", backchannel_logout_revoke_offline_sessions)
        if backchannel_logout_session_required is not None:
            pulumi.set(__self__, "backchannel_logout_session_required", backchannel_logout_session_required)
        if backchannel_logout_url is not None:
            pulumi.set(__self__, "backchannel_logout_url", backchannel_logout_url)
        if base_url is not None:
            pulumi.set(__self__, "base_url", base_url)
        if client_authenticator_type is not None:
            pulumi.set(__self__, "client_authenticator_type", client_authenticator_type)
        if client_offline_session_idle_timeout is not None:
            pulumi.set(__self__, "client_offline_session_idle_timeout", client_offline_session_idle_timeout)
        if client_offline_session_max_lifespan is not None:
            pulumi.set(__self__, "client_offline_session_max_lifespan", client_offline_session_max_lifespan)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if client_session_idle_timeout is not None:
            pulumi.set(__self__, "client_session_idle_timeout", client_session_idle_timeout)
        if client_session_max_lifespan is not None:
            pulumi.set(__self__, "client_session_max_lifespan", client_session_max_lifespan)
        if consent_required is not None:
            pulumi.set(__self__, "consent_required", consent_required)
        if consent_screen_text is not None:
            pulumi.set(__self__, "consent_screen_text", consent_screen_text)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if direct_access_grants_enabled is not None:
            pulumi.set(__self__, "direct_access_grants_enabled", direct_access_grants_enabled)
        if display_on_consent_screen is not None:
            pulumi.set(__self__, "display_on_consent_screen", display_on_consent_screen)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if exclude_session_state_from_auth_response is not None:
            pulumi.set(__self__, "exclude_session_state_from_auth_response", exclude_session_state_from_auth_response)
        if extra_config is not None:
            pulumi.set(__self__, "extra_config", extra_config)
        if frontchannel_logout_enabled is not None:
            pulumi.set(__self__, "frontchannel_logout_enabled", frontchannel_logout_enabled)
        if frontchannel_logout_url is not None:
            pulumi.set(__self__, "frontchannel_logout_url", frontchannel_logout_url)
        if full_scope_allowed is not None:
            pulumi.set(__self__, "full_scope_allowed", full_scope_allowed)
        if implicit_flow_enabled is not None:
            pulumi.set(__self__, "implicit_flow_enabled", implicit_flow_enabled)
        if import_ is not None:
            pulumi.set(__self__, "import_", import_)
        if login_theme is not None:
            pulumi.set(__self__, "login_theme", login_theme)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if oauth2_device_authorization_grant_enabled is not None:
            pulumi.set(__self__, "oauth2_device_authorization_grant_enabled", oauth2_device_authorization_grant_enabled)
        if oauth2_device_code_lifespan is not None:
            pulumi.set(__self__, "oauth2_device_code_lifespan", oauth2_device_code_lifespan)
        if oauth2_device_polling_interval is not None:
            pulumi.set(__self__, "oauth2_device_polling_interval", oauth2_device_polling_interval)
        if pkce_code_challenge_method is not None:
            pulumi.set(__self__, "pkce_code_challenge_method", pkce_code_challenge_method)
        if root_url is not None:
            pulumi.set(__self__, "root_url", root_url)
        if service_accounts_enabled is not None:
            pulumi.set(__self__, "service_accounts_enabled", service_accounts_enabled)
        if standard_flow_enabled is not None:
            pulumi.set(__self__, "standard_flow_enabled", standard_flow_enabled)
        if use_refresh_tokens is not None:
            pulumi.set(__self__, "use_refresh_tokens", use_refresh_tokens)
        if use_refresh_tokens_client_credentials is not None:
            pulumi.set(__self__, "use_refresh_tokens_client_credentials", use_refresh_tokens_client_credentials)
        if valid_post_logout_redirect_uris is not None:
            pulumi.set(__self__, "valid_post_logout_redirect_uris", valid_post_logout_redirect_uris)
        if valid_redirect_uris is not None:
            pulumi.set(__self__, "valid_redirect_uris", valid_redirect_uris)
        if web_origins is not None:
            pulumi.set(__self__, "web_origins", web_origins)

    @property
    @pulumi.getter(name="accessType")
    def access_type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "access_type")

    @access_type.setter
    def access_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "access_type", value)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_id")

    @client_id.setter
    def client_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_id", value)

    @property
    @pulumi.getter(name="realmId")
    def realm_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "realm_id")

    @realm_id.setter
    def realm_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "realm_id", value)

    @property
    @pulumi.getter(name="accessTokenLifespan")
    def access_token_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_token_lifespan")

    @access_token_lifespan.setter
    def access_token_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_token_lifespan", value)

    @property
    @pulumi.getter(name="adminUrl")
    def admin_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "admin_url")

    @admin_url.setter
    def admin_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "admin_url", value)

    @property
    @pulumi.getter(name="authenticationFlowBindingOverrides")
    def authentication_flow_binding_overrides(self) -> Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']]:
        return pulumi.get(self, "authentication_flow_binding_overrides")

    @authentication_flow_binding_overrides.setter
    def authentication_flow_binding_overrides(self, value: Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']]):
        pulumi.set(self, "authentication_flow_binding_overrides", value)

    @property
    @pulumi.getter
    def authorization(self) -> Optional[pulumi.Input['ClientAuthorizationArgs']]:
        return pulumi.get(self, "authorization")

    @authorization.setter
    def authorization(self, value: Optional[pulumi.Input['ClientAuthorizationArgs']]):
        pulumi.set(self, "authorization", value)

    @property
    @pulumi.getter(name="backchannelLogoutRevokeOfflineSessions")
    def backchannel_logout_revoke_offline_sessions(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "backchannel_logout_revoke_offline_sessions")

    @backchannel_logout_revoke_offline_sessions.setter
    def backchannel_logout_revoke_offline_sessions(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "backchannel_logout_revoke_offline_sessions", value)

    @property
    @pulumi.getter(name="backchannelLogoutSessionRequired")
    def backchannel_logout_session_required(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "backchannel_logout_session_required")

    @backchannel_logout_session_required.setter
    def backchannel_logout_session_required(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "backchannel_logout_session_required", value)

    @property
    @pulumi.getter(name="backchannelLogoutUrl")
    def backchannel_logout_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "backchannel_logout_url")

    @backchannel_logout_url.setter
    def backchannel_logout_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "backchannel_logout_url", value)

    @property
    @pulumi.getter(name="baseUrl")
    def base_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "base_url")

    @base_url.setter
    def base_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "base_url", value)

    @property
    @pulumi.getter(name="clientAuthenticatorType")
    def client_authenticator_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_authenticator_type")

    @client_authenticator_type.setter
    def client_authenticator_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_authenticator_type", value)

    @property
    @pulumi.getter(name="clientOfflineSessionIdleTimeout")
    def client_offline_session_idle_timeout(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_offline_session_idle_timeout")

    @client_offline_session_idle_timeout.setter
    def client_offline_session_idle_timeout(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_offline_session_idle_timeout", value)

    @property
    @pulumi.getter(name="clientOfflineSessionMaxLifespan")
    def client_offline_session_max_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_offline_session_max_lifespan")

    @client_offline_session_max_lifespan.setter
    def client_offline_session_max_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_offline_session_max_lifespan", value)

    @property
    @pulumi.getter(name="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_secret")

    @client_secret.setter
    def client_secret(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_secret", value)

    @property
    @pulumi.getter(name="clientSessionIdleTimeout")
    def client_session_idle_timeout(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_session_idle_timeout")

    @client_session_idle_timeout.setter
    def client_session_idle_timeout(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_session_idle_timeout", value)

    @property
    @pulumi.getter(name="clientSessionMaxLifespan")
    def client_session_max_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_session_max_lifespan")

    @client_session_max_lifespan.setter
    def client_session_max_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_session_max_lifespan", value)

    @property
    @pulumi.getter(name="consentRequired")
    def consent_required(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "consent_required")

    @consent_required.setter
    def consent_required(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "consent_required", value)

    @property
    @pulumi.getter(name="consentScreenText")
    def consent_screen_text(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "consent_screen_text")

    @consent_screen_text.setter
    def consent_screen_text(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "consent_screen_text", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="directAccessGrantsEnabled")
    def direct_access_grants_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "direct_access_grants_enabled")

    @direct_access_grants_enabled.setter
    def direct_access_grants_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "direct_access_grants_enabled", value)

    @property
    @pulumi.getter(name="displayOnConsentScreen")
    def display_on_consent_screen(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "display_on_consent_screen")

    @display_on_consent_screen.setter
    def display_on_consent_screen(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "display_on_consent_screen", value)

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter(name="excludeSessionStateFromAuthResponse")
    def exclude_session_state_from_auth_response(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "exclude_session_state_from_auth_response")

    @exclude_session_state_from_auth_response.setter
    def exclude_session_state_from_auth_response(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "exclude_session_state_from_auth_response", value)

    @property
    @pulumi.getter(name="extraConfig")
    def extra_config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        return pulumi.get(self, "extra_config")

    @extra_config.setter
    def extra_config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "extra_config", value)

    @property
    @pulumi.getter(name="frontchannelLogoutEnabled")
    def frontchannel_logout_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "frontchannel_logout_enabled")

    @frontchannel_logout_enabled.setter
    def frontchannel_logout_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "frontchannel_logout_enabled", value)

    @property
    @pulumi.getter(name="frontchannelLogoutUrl")
    def frontchannel_logout_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "frontchannel_logout_url")

    @frontchannel_logout_url.setter
    def frontchannel_logout_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "frontchannel_logout_url", value)

    @property
    @pulumi.getter(name="fullScopeAllowed")
    def full_scope_allowed(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "full_scope_allowed")

    @full_scope_allowed.setter
    def full_scope_allowed(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "full_scope_allowed", value)

    @property
    @pulumi.getter(name="implicitFlowEnabled")
    def implicit_flow_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "implicit_flow_enabled")

    @implicit_flow_enabled.setter
    def implicit_flow_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "implicit_flow_enabled", value)

    @property
    @pulumi.getter(name="import")
    def import_(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "import_")

    @import_.setter
    def import_(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "import_", value)

    @property
    @pulumi.getter(name="loginTheme")
    def login_theme(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "login_theme")

    @login_theme.setter
    def login_theme(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "login_theme", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="oauth2DeviceAuthorizationGrantEnabled")
    def oauth2_device_authorization_grant_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "oauth2_device_authorization_grant_enabled")

    @oauth2_device_authorization_grant_enabled.setter
    def oauth2_device_authorization_grant_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "oauth2_device_authorization_grant_enabled", value)

    @property
    @pulumi.getter(name="oauth2DeviceCodeLifespan")
    def oauth2_device_code_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "oauth2_device_code_lifespan")

    @oauth2_device_code_lifespan.setter
    def oauth2_device_code_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "oauth2_device_code_lifespan", value)

    @property
    @pulumi.getter(name="oauth2DevicePollingInterval")
    def oauth2_device_polling_interval(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "oauth2_device_polling_interval")

    @oauth2_device_polling_interval.setter
    def oauth2_device_polling_interval(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "oauth2_device_polling_interval", value)

    @property
    @pulumi.getter(name="pkceCodeChallengeMethod")
    def pkce_code_challenge_method(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "pkce_code_challenge_method")

    @pkce_code_challenge_method.setter
    def pkce_code_challenge_method(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pkce_code_challenge_method", value)

    @property
    @pulumi.getter(name="rootUrl")
    def root_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "root_url")

    @root_url.setter
    def root_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "root_url", value)

    @property
    @pulumi.getter(name="serviceAccountsEnabled")
    def service_accounts_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "service_accounts_enabled")

    @service_accounts_enabled.setter
    def service_accounts_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "service_accounts_enabled", value)

    @property
    @pulumi.getter(name="standardFlowEnabled")
    def standard_flow_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "standard_flow_enabled")

    @standard_flow_enabled.setter
    def standard_flow_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "standard_flow_enabled", value)

    @property
    @pulumi.getter(name="useRefreshTokens")
    def use_refresh_tokens(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_refresh_tokens")

    @use_refresh_tokens.setter
    def use_refresh_tokens(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_refresh_tokens", value)

    @property
    @pulumi.getter(name="useRefreshTokensClientCredentials")
    def use_refresh_tokens_client_credentials(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_refresh_tokens_client_credentials")

    @use_refresh_tokens_client_credentials.setter
    def use_refresh_tokens_client_credentials(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_refresh_tokens_client_credentials", value)

    @property
    @pulumi.getter(name="validPostLogoutRedirectUris")
    def valid_post_logout_redirect_uris(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "valid_post_logout_redirect_uris")

    @valid_post_logout_redirect_uris.setter
    def valid_post_logout_redirect_uris(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "valid_post_logout_redirect_uris", value)

    @property
    @pulumi.getter(name="validRedirectUris")
    def valid_redirect_uris(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "valid_redirect_uris")

    @valid_redirect_uris.setter
    def valid_redirect_uris(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "valid_redirect_uris", value)

    @property
    @pulumi.getter(name="webOrigins")
    def web_origins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "web_origins")

    @web_origins.setter
    def web_origins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "web_origins", value)


@pulumi.input_type
class _ClientState:
    def __init__(__self__, *,
                 access_token_lifespan: Optional[pulumi.Input[str]] = None,
                 access_type: Optional[pulumi.Input[str]] = None,
                 admin_url: Optional[pulumi.Input[str]] = None,
                 authentication_flow_binding_overrides: Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']] = None,
                 authorization: Optional[pulumi.Input['ClientAuthorizationArgs']] = None,
                 backchannel_logout_revoke_offline_sessions: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_session_required: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 base_url: Optional[pulumi.Input[str]] = None,
                 client_authenticator_type: Optional[pulumi.Input[str]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_offline_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_offline_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 client_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 consent_required: Optional[pulumi.Input[bool]] = None,
                 consent_screen_text: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 direct_access_grants_enabled: Optional[pulumi.Input[bool]] = None,
                 display_on_consent_screen: Optional[pulumi.Input[bool]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 exclude_session_state_from_auth_response: Optional[pulumi.Input[bool]] = None,
                 extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 frontchannel_logout_enabled: Optional[pulumi.Input[bool]] = None,
                 frontchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 full_scope_allowed: Optional[pulumi.Input[bool]] = None,
                 implicit_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 import_: Optional[pulumi.Input[bool]] = None,
                 login_theme: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 oauth2_device_authorization_grant_enabled: Optional[pulumi.Input[bool]] = None,
                 oauth2_device_code_lifespan: Optional[pulumi.Input[str]] = None,
                 oauth2_device_polling_interval: Optional[pulumi.Input[str]] = None,
                 pkce_code_challenge_method: Optional[pulumi.Input[str]] = None,
                 realm_id: Optional[pulumi.Input[str]] = None,
                 resource_server_id: Optional[pulumi.Input[str]] = None,
                 root_url: Optional[pulumi.Input[str]] = None,
                 service_account_user_id: Optional[pulumi.Input[str]] = None,
                 service_accounts_enabled: Optional[pulumi.Input[bool]] = None,
                 standard_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens_client_credentials: Optional[pulumi.Input[bool]] = None,
                 valid_post_logout_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 valid_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 web_origins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        Input properties used for looking up and filtering Client resources.
        """
        if access_token_lifespan is not None:
            pulumi.set(__self__, "access_token_lifespan", access_token_lifespan)
        if access_type is not None:
            pulumi.set(__self__, "access_type", access_type)
        if admin_url is not None:
            pulumi.set(__self__, "admin_url", admin_url)
        if authentication_flow_binding_overrides is not None:
            pulumi.set(__self__, "authentication_flow_binding_overrides", authentication_flow_binding_overrides)
        if authorization is not None:
            pulumi.set(__self__, "authorization", authorization)
        if backchannel_logout_revoke_offline_sessions is not None:
            pulumi.set(__self__, "backchannel_logout_revoke_offline_sessions", backchannel_logout_revoke_offline_sessions)
        if backchannel_logout_session_required is not None:
            pulumi.set(__self__, "backchannel_logout_session_required", backchannel_logout_session_required)
        if backchannel_logout_url is not None:
            pulumi.set(__self__, "backchannel_logout_url", backchannel_logout_url)
        if base_url is not None:
            pulumi.set(__self__, "base_url", base_url)
        if client_authenticator_type is not None:
            pulumi.set(__self__, "client_authenticator_type", client_authenticator_type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_offline_session_idle_timeout is not None:
            pulumi.set(__self__, "client_offline_session_idle_timeout", client_offline_session_idle_timeout)
        if client_offline_session_max_lifespan is not None:
            pulumi.set(__self__, "client_offline_session_max_lifespan", client_offline_session_max_lifespan)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if client_session_idle_timeout is not None:
            pulumi.set(__self__, "client_session_idle_timeout", client_session_idle_timeout)
        if client_session_max_lifespan is not None:
            pulumi.set(__self__, "client_session_max_lifespan", client_session_max_lifespan)
        if consent_required is not None:
            pulumi.set(__self__, "consent_required", consent_required)
        if consent_screen_text is not None:
            pulumi.set(__self__, "consent_screen_text", consent_screen_text)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if direct_access_grants_enabled is not None:
            pulumi.set(__self__, "direct_access_grants_enabled", direct_access_grants_enabled)
        if display_on_consent_screen is not None:
            pulumi.set(__self__, "display_on_consent_screen", display_on_consent_screen)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if exclude_session_state_from_auth_response is not None:
            pulumi.set(__self__, "exclude_session_state_from_auth_response", exclude_session_state_from_auth_response)
        if extra_config is not None:
            pulumi.set(__self__, "extra_config", extra_config)
        if frontchannel_logout_enabled is not None:
            pulumi.set(__self__, "frontchannel_logout_enabled", frontchannel_logout_enabled)
        if frontchannel_logout_url is not None:
            pulumi.set(__self__, "frontchannel_logout_url", frontchannel_logout_url)
        if full_scope_allowed is not None:
            pulumi.set(__self__, "full_scope_allowed", full_scope_allowed)
        if implicit_flow_enabled is not None:
            pulumi.set(__self__, "implicit_flow_enabled", implicit_flow_enabled)
        if import_ is not None:
            pulumi.set(__self__, "import_", import_)
        if login_theme is not None:
            pulumi.set(__self__, "login_theme", login_theme)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if oauth2_device_authorization_grant_enabled is not None:
            pulumi.set(__self__, "oauth2_device_authorization_grant_enabled", oauth2_device_authorization_grant_enabled)
        if oauth2_device_code_lifespan is not None:
            pulumi.set(__self__, "oauth2_device_code_lifespan", oauth2_device_code_lifespan)
        if oauth2_device_polling_interval is not None:
            pulumi.set(__self__, "oauth2_device_polling_interval", oauth2_device_polling_interval)
        if pkce_code_challenge_method is not None:
            pulumi.set(__self__, "pkce_code_challenge_method", pkce_code_challenge_method)
        if realm_id is not None:
            pulumi.set(__self__, "realm_id", realm_id)
        if resource_server_id is not None:
            pulumi.set(__self__, "resource_server_id", resource_server_id)
        if root_url is not None:
            pulumi.set(__self__, "root_url", root_url)
        if service_account_user_id is not None:
            pulumi.set(__self__, "service_account_user_id", service_account_user_id)
        if service_accounts_enabled is not None:
            pulumi.set(__self__, "service_accounts_enabled", service_accounts_enabled)
        if standard_flow_enabled is not None:
            pulumi.set(__self__, "standard_flow_enabled", standard_flow_enabled)
        if use_refresh_tokens is not None:
            pulumi.set(__self__, "use_refresh_tokens", use_refresh_tokens)
        if use_refresh_tokens_client_credentials is not None:
            pulumi.set(__self__, "use_refresh_tokens_client_credentials", use_refresh_tokens_client_credentials)
        if valid_post_logout_redirect_uris is not None:
            pulumi.set(__self__, "valid_post_logout_redirect_uris", valid_post_logout_redirect_uris)
        if valid_redirect_uris is not None:
            pulumi.set(__self__, "valid_redirect_uris", valid_redirect_uris)
        if web_origins is not None:
            pulumi.set(__self__, "web_origins", web_origins)

    @property
    @pulumi.getter(name="accessTokenLifespan")
    def access_token_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_token_lifespan")

    @access_token_lifespan.setter
    def access_token_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_token_lifespan", value)

    @property
    @pulumi.getter(name="accessType")
    def access_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_type")

    @access_type.setter
    def access_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_type", value)

    @property
    @pulumi.getter(name="adminUrl")
    def admin_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "admin_url")

    @admin_url.setter
    def admin_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "admin_url", value)

    @property
    @pulumi.getter(name="authenticationFlowBindingOverrides")
    def authentication_flow_binding_overrides(self) -> Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']]:
        return pulumi.get(self, "authentication_flow_binding_overrides")

    @authentication_flow_binding_overrides.setter
    def authentication_flow_binding_overrides(self, value: Optional[pulumi.Input['ClientAuthenticationFlowBindingOverridesArgs']]):
        pulumi.set(self, "authentication_flow_binding_overrides", value)

    @property
    @pulumi.getter
    def authorization(self) -> Optional[pulumi.Input['ClientAuthorizationArgs']]:
        return pulumi.get(self, "authorization")

    @authorization.setter
    def authorization(self, value: Optional[pulumi.Input['ClientAuthorizationArgs']]):
        pulumi.set(self, "authorization", value)

    @property
    @pulumi.getter(name="backchannelLogoutRevokeOfflineSessions")
    def backchannel_logout_revoke_offline_sessions(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "backchannel_logout_revoke_offline_sessions")

    @backchannel_logout_revoke_offline_sessions.setter
    def backchannel_logout_revoke_offline_sessions(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "backchannel_logout_revoke_offline_sessions", value)

    @property
    @pulumi.getter(name="backchannelLogoutSessionRequired")
    def backchannel_logout_session_required(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "backchannel_logout_session_required")

    @backchannel_logout_session_required.setter
    def backchannel_logout_session_required(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "backchannel_logout_session_required", value)

    @property
    @pulumi.getter(name="backchannelLogoutUrl")
    def backchannel_logout_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "backchannel_logout_url")

    @backchannel_logout_url.setter
    def backchannel_logout_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "backchannel_logout_url", value)

    @property
    @pulumi.getter(name="baseUrl")
    def base_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "base_url")

    @base_url.setter
    def base_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "base_url", value)

    @property
    @pulumi.getter(name="clientAuthenticatorType")
    def client_authenticator_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_authenticator_type")

    @client_authenticator_type.setter
    def client_authenticator_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_authenticator_type", value)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_id")

    @client_id.setter
    def client_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_id", value)

    @property
    @pulumi.getter(name="clientOfflineSessionIdleTimeout")
    def client_offline_session_idle_timeout(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_offline_session_idle_timeout")

    @client_offline_session_idle_timeout.setter
    def client_offline_session_idle_timeout(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_offline_session_idle_timeout", value)

    @property
    @pulumi.getter(name="clientOfflineSessionMaxLifespan")
    def client_offline_session_max_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_offline_session_max_lifespan")

    @client_offline_session_max_lifespan.setter
    def client_offline_session_max_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_offline_session_max_lifespan", value)

    @property
    @pulumi.getter(name="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_secret")

    @client_secret.setter
    def client_secret(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_secret", value)

    @property
    @pulumi.getter(name="clientSessionIdleTimeout")
    def client_session_idle_timeout(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_session_idle_timeout")

    @client_session_idle_timeout.setter
    def client_session_idle_timeout(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_session_idle_timeout", value)

    @property
    @pulumi.getter(name="clientSessionMaxLifespan")
    def client_session_max_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "client_session_max_lifespan")

    @client_session_max_lifespan.setter
    def client_session_max_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "client_session_max_lifespan", value)

    @property
    @pulumi.getter(name="consentRequired")
    def consent_required(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "consent_required")

    @consent_required.setter
    def consent_required(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "consent_required", value)

    @property
    @pulumi.getter(name="consentScreenText")
    def consent_screen_text(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "consent_screen_text")

    @consent_screen_text.setter
    def consent_screen_text(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "consent_screen_text", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="directAccessGrantsEnabled")
    def direct_access_grants_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "direct_access_grants_enabled")

    @direct_access_grants_enabled.setter
    def direct_access_grants_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "direct_access_grants_enabled", value)

    @property
    @pulumi.getter(name="displayOnConsentScreen")
    def display_on_consent_screen(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "display_on_consent_screen")

    @display_on_consent_screen.setter
    def display_on_consent_screen(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "display_on_consent_screen", value)

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter(name="excludeSessionStateFromAuthResponse")
    def exclude_session_state_from_auth_response(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "exclude_session_state_from_auth_response")

    @exclude_session_state_from_auth_response.setter
    def exclude_session_state_from_auth_response(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "exclude_session_state_from_auth_response", value)

    @property
    @pulumi.getter(name="extraConfig")
    def extra_config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        return pulumi.get(self, "extra_config")

    @extra_config.setter
    def extra_config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "extra_config", value)

    @property
    @pulumi.getter(name="frontchannelLogoutEnabled")
    def frontchannel_logout_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "frontchannel_logout_enabled")

    @frontchannel_logout_enabled.setter
    def frontchannel_logout_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "frontchannel_logout_enabled", value)

    @property
    @pulumi.getter(name="frontchannelLogoutUrl")
    def frontchannel_logout_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "frontchannel_logout_url")

    @frontchannel_logout_url.setter
    def frontchannel_logout_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "frontchannel_logout_url", value)

    @property
    @pulumi.getter(name="fullScopeAllowed")
    def full_scope_allowed(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "full_scope_allowed")

    @full_scope_allowed.setter
    def full_scope_allowed(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "full_scope_allowed", value)

    @property
    @pulumi.getter(name="implicitFlowEnabled")
    def implicit_flow_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "implicit_flow_enabled")

    @implicit_flow_enabled.setter
    def implicit_flow_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "implicit_flow_enabled", value)

    @property
    @pulumi.getter(name="import")
    def import_(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "import_")

    @import_.setter
    def import_(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "import_", value)

    @property
    @pulumi.getter(name="loginTheme")
    def login_theme(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "login_theme")

    @login_theme.setter
    def login_theme(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "login_theme", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="oauth2DeviceAuthorizationGrantEnabled")
    def oauth2_device_authorization_grant_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "oauth2_device_authorization_grant_enabled")

    @oauth2_device_authorization_grant_enabled.setter
    def oauth2_device_authorization_grant_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "oauth2_device_authorization_grant_enabled", value)

    @property
    @pulumi.getter(name="oauth2DeviceCodeLifespan")
    def oauth2_device_code_lifespan(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "oauth2_device_code_lifespan")

    @oauth2_device_code_lifespan.setter
    def oauth2_device_code_lifespan(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "oauth2_device_code_lifespan", value)

    @property
    @pulumi.getter(name="oauth2DevicePollingInterval")
    def oauth2_device_polling_interval(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "oauth2_device_polling_interval")

    @oauth2_device_polling_interval.setter
    def oauth2_device_polling_interval(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "oauth2_device_polling_interval", value)

    @property
    @pulumi.getter(name="pkceCodeChallengeMethod")
    def pkce_code_challenge_method(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "pkce_code_challenge_method")

    @pkce_code_challenge_method.setter
    def pkce_code_challenge_method(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pkce_code_challenge_method", value)

    @property
    @pulumi.getter(name="realmId")
    def realm_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "realm_id")

    @realm_id.setter
    def realm_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "realm_id", value)

    @property
    @pulumi.getter(name="resourceServerId")
    def resource_server_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "resource_server_id")

    @resource_server_id.setter
    def resource_server_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "resource_server_id", value)

    @property
    @pulumi.getter(name="rootUrl")
    def root_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "root_url")

    @root_url.setter
    def root_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "root_url", value)

    @property
    @pulumi.getter(name="serviceAccountUserId")
    def service_account_user_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "service_account_user_id")

    @service_account_user_id.setter
    def service_account_user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_account_user_id", value)

    @property
    @pulumi.getter(name="serviceAccountsEnabled")
    def service_accounts_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "service_accounts_enabled")

    @service_accounts_enabled.setter
    def service_accounts_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "service_accounts_enabled", value)

    @property
    @pulumi.getter(name="standardFlowEnabled")
    def standard_flow_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "standard_flow_enabled")

    @standard_flow_enabled.setter
    def standard_flow_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "standard_flow_enabled", value)

    @property
    @pulumi.getter(name="useRefreshTokens")
    def use_refresh_tokens(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_refresh_tokens")

    @use_refresh_tokens.setter
    def use_refresh_tokens(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_refresh_tokens", value)

    @property
    @pulumi.getter(name="useRefreshTokensClientCredentials")
    def use_refresh_tokens_client_credentials(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_refresh_tokens_client_credentials")

    @use_refresh_tokens_client_credentials.setter
    def use_refresh_tokens_client_credentials(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_refresh_tokens_client_credentials", value)

    @property
    @pulumi.getter(name="validPostLogoutRedirectUris")
    def valid_post_logout_redirect_uris(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "valid_post_logout_redirect_uris")

    @valid_post_logout_redirect_uris.setter
    def valid_post_logout_redirect_uris(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "valid_post_logout_redirect_uris", value)

    @property
    @pulumi.getter(name="validRedirectUris")
    def valid_redirect_uris(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "valid_redirect_uris")

    @valid_redirect_uris.setter
    def valid_redirect_uris(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "valid_redirect_uris", value)

    @property
    @pulumi.getter(name="webOrigins")
    def web_origins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "web_origins")

    @web_origins.setter
    def web_origins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "web_origins", value)


class Client(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_token_lifespan: Optional[pulumi.Input[str]] = None,
                 access_type: Optional[pulumi.Input[str]] = None,
                 admin_url: Optional[pulumi.Input[str]] = None,
                 authentication_flow_binding_overrides: Optional[pulumi.Input[Union['ClientAuthenticationFlowBindingOverridesArgs', 'ClientAuthenticationFlowBindingOverridesArgsDict']]] = None,
                 authorization: Optional[pulumi.Input[Union['ClientAuthorizationArgs', 'ClientAuthorizationArgsDict']]] = None,
                 backchannel_logout_revoke_offline_sessions: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_session_required: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 base_url: Optional[pulumi.Input[str]] = None,
                 client_authenticator_type: Optional[pulumi.Input[str]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_offline_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_offline_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 client_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 consent_required: Optional[pulumi.Input[bool]] = None,
                 consent_screen_text: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 direct_access_grants_enabled: Optional[pulumi.Input[bool]] = None,
                 display_on_consent_screen: Optional[pulumi.Input[bool]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 exclude_session_state_from_auth_response: Optional[pulumi.Input[bool]] = None,
                 extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 frontchannel_logout_enabled: Optional[pulumi.Input[bool]] = None,
                 frontchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 full_scope_allowed: Optional[pulumi.Input[bool]] = None,
                 implicit_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 import_: Optional[pulumi.Input[bool]] = None,
                 login_theme: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 oauth2_device_authorization_grant_enabled: Optional[pulumi.Input[bool]] = None,
                 oauth2_device_code_lifespan: Optional[pulumi.Input[str]] = None,
                 oauth2_device_polling_interval: Optional[pulumi.Input[str]] = None,
                 pkce_code_challenge_method: Optional[pulumi.Input[str]] = None,
                 realm_id: Optional[pulumi.Input[str]] = None,
                 root_url: Optional[pulumi.Input[str]] = None,
                 service_accounts_enabled: Optional[pulumi.Input[bool]] = None,
                 standard_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens_client_credentials: Optional[pulumi.Input[bool]] = None,
                 valid_post_logout_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 valid_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 web_origins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        """
        ## # openid.Client

        Allows for creating and managing Keycloak clients that use the OpenID Connect protocol.

        Clients are entities that can use Keycloak for user authentication. Typically,
        clients are applications that redirect users to Keycloak for authentication
        in order to take advantage of Keycloak's user sessions for SSO.

        ### Example Usage

        ```python
        import pulumi
        import pulumi_keycloak as keycloak

        realm = keycloak.Realm("realm",
            realm="my-realm",
            enabled=True)
        openid_client = keycloak.openid.Client("openid_client",
            realm_id=realm.id,
            client_id="test-client",
            name="test client",
            enabled=True,
            access_type="CONFIDENTIAL",
            valid_redirect_uris=["http://localhost:8080/openid-callback"])
        ```

        ### Argument Reference

        The following arguments are supported:

        - `realm_id` - (Required) The realm this client is attached to.
        - `client_id` - (Required) The unique ID of this client, referenced in the URI during authentication and in issued tokens.
        - `name` - (Optional) The display name of this client in the GUI.
        - `enabled` - (Optional) When false, this client will not be able to initiate a login or obtain access tokens. Defaults to `true`.
        - `description` - (Optional) The description of this client in the GUI.
        - `access_type` - (Required) Specifies the type of client, which can be one of the following:
            - `CONFIDENTIAL` - Used for server-side clients that require both client ID and secret when authenticating.
              This client should be used for applications using the Authorization Code or Client Credentials grant flows.
            - `PUBLIC` - Used for browser-only applications that do not require a client secret, and instead rely only on authorized redirect
              URIs for security. This client should be used for applications using the Implicit grant flow.
            - `BEARER-ONLY` - Used for services that never initiate a login. This client will only allow bearer token requests.
        - `client_secret` - (Optional) The secret for clients with an `access_type` of `CONFIDENTIAL` or `BEARER-ONLY`. This value is sensitive and
          should be treated with the same care as a password. If omitted, Keycloak will generate a GUID for this attribute.
        - `standard_flow_enabled` - (Optional) When `true`, the OAuth2 Authorization Code Grant will be enabled for this client. Defaults to `false`.
        - `implicit_flow_enabled` - (Optional) When `true`, the OAuth2 Implicit Grant will be enabled for this client. Defaults to `false`.
        - `direct_access_grants_enabled` - (Optional) When `true`, the OAuth2 Resource Owner Password Grant will be enabled for this client. Defaults to `false`.
        - `service_accounts_enabled` - (Optional) When `true`, the OAuth2 Client Credentials grant will be enabled for this client. Defaults to `false`.
        - `valid_redirect_uris` - (Optional) A list of valid URIs a browser is permitted to redirect to after a successful login or logout. Simple
          wildcards in the form of an asterisk can be used here. This attribute must be set if either `standard_flow_enabled` or `implicit_flow_enabled`
          is set to `true`.
        - `web_origins` - (Optional) A list of allowed CORS origins. `+` can be used to permit all valid redirect URIs, and `*` can be used to permit all origins.
        - `admin_url` - (Optional) URL to the admin interface of the client.
        - `base_url` - (Optional) Default URL to use when the auth server needs to redirect or link back to the client.
        - `pkce_code_challenge_method` - (Optional) The challenge method to use for Proof Key for Code Exchange. Can be either `plain` or `S256` or set to empty value ``.
        - `full_scope_allowed` - (Optional) - Allow to include all roles mappings in the access token.

        ### Attributes Reference

        In addition to the arguments listed above, the following computed attributes are exported:

        - `service_account_user_id` - When service accounts are enabled for this client, this attribute is the unique ID for the Keycloak user that represents this service account.

        ### Import

        Clients can be imported using the format `{{realm_id}}/{{client_keycloak_id}}`, where `client_keycloak_id` is the unique ID that Keycloak
        assigns to the client upon creation. This value can be found in the URI when editing this client in the GUI, and is typically a GUID.

        Example:

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ClientArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ## # openid.Client

        Allows for creating and managing Keycloak clients that use the OpenID Connect protocol.

        Clients are entities that can use Keycloak for user authentication. Typically,
        clients are applications that redirect users to Keycloak for authentication
        in order to take advantage of Keycloak's user sessions for SSO.

        ### Example Usage

        ```python
        import pulumi
        import pulumi_keycloak as keycloak

        realm = keycloak.Realm("realm",
            realm="my-realm",
            enabled=True)
        openid_client = keycloak.openid.Client("openid_client",
            realm_id=realm.id,
            client_id="test-client",
            name="test client",
            enabled=True,
            access_type="CONFIDENTIAL",
            valid_redirect_uris=["http://localhost:8080/openid-callback"])
        ```

        ### Argument Reference

        The following arguments are supported:

        - `realm_id` - (Required) The realm this client is attached to.
        - `client_id` - (Required) The unique ID of this client, referenced in the URI during authentication and in issued tokens.
        - `name` - (Optional) The display name of this client in the GUI.
        - `enabled` - (Optional) When false, this client will not be able to initiate a login or obtain access tokens. Defaults to `true`.
        - `description` - (Optional) The description of this client in the GUI.
        - `access_type` - (Required) Specifies the type of client, which can be one of the following:
            - `CONFIDENTIAL` - Used for server-side clients that require both client ID and secret when authenticating.
              This client should be used for applications using the Authorization Code or Client Credentials grant flows.
            - `PUBLIC` - Used for browser-only applications that do not require a client secret, and instead rely only on authorized redirect
              URIs for security. This client should be used for applications using the Implicit grant flow.
            - `BEARER-ONLY` - Used for services that never initiate a login. This client will only allow bearer token requests.
        - `client_secret` - (Optional) The secret for clients with an `access_type` of `CONFIDENTIAL` or `BEARER-ONLY`. This value is sensitive and
          should be treated with the same care as a password. If omitted, Keycloak will generate a GUID for this attribute.
        - `standard_flow_enabled` - (Optional) When `true`, the OAuth2 Authorization Code Grant will be enabled for this client. Defaults to `false`.
        - `implicit_flow_enabled` - (Optional) When `true`, the OAuth2 Implicit Grant will be enabled for this client. Defaults to `false`.
        - `direct_access_grants_enabled` - (Optional) When `true`, the OAuth2 Resource Owner Password Grant will be enabled for this client. Defaults to `false`.
        - `service_accounts_enabled` - (Optional) When `true`, the OAuth2 Client Credentials grant will be enabled for this client. Defaults to `false`.
        - `valid_redirect_uris` - (Optional) A list of valid URIs a browser is permitted to redirect to after a successful login or logout. Simple
          wildcards in the form of an asterisk can be used here. This attribute must be set if either `standard_flow_enabled` or `implicit_flow_enabled`
          is set to `true`.
        - `web_origins` - (Optional) A list of allowed CORS origins. `+` can be used to permit all valid redirect URIs, and `*` can be used to permit all origins.
        - `admin_url` - (Optional) URL to the admin interface of the client.
        - `base_url` - (Optional) Default URL to use when the auth server needs to redirect or link back to the client.
        - `pkce_code_challenge_method` - (Optional) The challenge method to use for Proof Key for Code Exchange. Can be either `plain` or `S256` or set to empty value ``.
        - `full_scope_allowed` - (Optional) - Allow to include all roles mappings in the access token.

        ### Attributes Reference

        In addition to the arguments listed above, the following computed attributes are exported:

        - `service_account_user_id` - When service accounts are enabled for this client, this attribute is the unique ID for the Keycloak user that represents this service account.

        ### Import

        Clients can be imported using the format `{{realm_id}}/{{client_keycloak_id}}`, where `client_keycloak_id` is the unique ID that Keycloak
        assigns to the client upon creation. This value can be found in the URI when editing this client in the GUI, and is typically a GUID.

        Example:

        :param str resource_name: The name of the resource.
        :param ClientArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(ClientArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_token_lifespan: Optional[pulumi.Input[str]] = None,
                 access_type: Optional[pulumi.Input[str]] = None,
                 admin_url: Optional[pulumi.Input[str]] = None,
                 authentication_flow_binding_overrides: Optional[pulumi.Input[Union['ClientAuthenticationFlowBindingOverridesArgs', 'ClientAuthenticationFlowBindingOverridesArgsDict']]] = None,
                 authorization: Optional[pulumi.Input[Union['ClientAuthorizationArgs', 'ClientAuthorizationArgsDict']]] = None,
                 backchannel_logout_revoke_offline_sessions: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_session_required: Optional[pulumi.Input[bool]] = None,
                 backchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 base_url: Optional[pulumi.Input[str]] = None,
                 client_authenticator_type: Optional[pulumi.Input[str]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_offline_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_offline_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 client_session_idle_timeout: Optional[pulumi.Input[str]] = None,
                 client_session_max_lifespan: Optional[pulumi.Input[str]] = None,
                 consent_required: Optional[pulumi.Input[bool]] = None,
                 consent_screen_text: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 direct_access_grants_enabled: Optional[pulumi.Input[bool]] = None,
                 display_on_consent_screen: Optional[pulumi.Input[bool]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 exclude_session_state_from_auth_response: Optional[pulumi.Input[bool]] = None,
                 extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 frontchannel_logout_enabled: Optional[pulumi.Input[bool]] = None,
                 frontchannel_logout_url: Optional[pulumi.Input[str]] = None,
                 full_scope_allowed: Optional[pulumi.Input[bool]] = None,
                 implicit_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 import_: Optional[pulumi.Input[bool]] = None,
                 login_theme: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 oauth2_device_authorization_grant_enabled: Optional[pulumi.Input[bool]] = None,
                 oauth2_device_code_lifespan: Optional[pulumi.Input[str]] = None,
                 oauth2_device_polling_interval: Optional[pulumi.Input[str]] = None,
                 pkce_code_challenge_method: Optional[pulumi.Input[str]] = None,
                 realm_id: Optional[pulumi.Input[str]] = None,
                 root_url: Optional[pulumi.Input[str]] = None,
                 service_accounts_enabled: Optional[pulumi.Input[bool]] = None,
                 standard_flow_enabled: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens: Optional[pulumi.Input[bool]] = None,
                 use_refresh_tokens_client_credentials: Optional[pulumi.Input[bool]] = None,
                 valid_post_logout_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 valid_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 web_origins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = ClientArgs.__new__(ClientArgs)

            __props__.__dict__["access_token_lifespan"] = access_token_lifespan
            if access_type is None and not opts.urn:
                raise TypeError("Missing required property 'access_type'")
            __props__.__dict__["access_type"] = access_type
            __props__.__dict__["admin_url"] = admin_url
            __props__.__dict__["authentication_flow_binding_overrides"] = authentication_flow_binding_overrides
            __props__.__dict__["authorization"] = authorization
            __props__.__dict__["backchannel_logout_revoke_offline_sessions"] = backchannel_logout_revoke_offline_sessions
            __props__.__dict__["backchannel_logout_session_required"] = backchannel_logout_session_required
            __props__.__dict__["backchannel_logout_url"] = backchannel_logout_url
            __props__.__dict__["base_url"] = base_url
            __props__.__dict__["client_authenticator_type"] = client_authenticator_type
            if client_id is None and not opts.urn:
                raise TypeError("Missing required property 'client_id'")
            __props__.__dict__["client_id"] = client_id
            __props__.__dict__["client_offline_session_idle_timeout"] = client_offline_session_idle_timeout
            __props__.__dict__["client_offline_session_max_lifespan"] = client_offline_session_max_lifespan
            __props__.__dict__["client_secret"] = None if client_secret is None else pulumi.Output.secret(client_secret)
            __props__.__dict__["client_session_idle_timeout"] = client_session_idle_timeout
            __props__.__dict__["client_session_max_lifespan"] = client_session_max_lifespan
            __props__.__dict__["consent_required"] = consent_required
            __props__.__dict__["consent_screen_text"] = consent_screen_text
            __props__.__dict__["description"] = description
            __props__.__dict__["direct_access_grants_enabled"] = direct_access_grants_enabled
            __props__.__dict__["display_on_consent_screen"] = display_on_consent_screen
            __props__.__dict__["enabled"] = enabled
            __props__.__dict__["exclude_session_state_from_auth_response"] = exclude_session_state_from_auth_response
            __props__.__dict__["extra_config"] = extra_config
            __props__.__dict__["frontchannel_logout_enabled"] = frontchannel_logout_enabled
            __props__.__dict__["frontchannel_logout_url"] = frontchannel_logout_url
            __props__.__dict__["full_scope_allowed"] = full_scope_allowed
            __props__.__dict__["implicit_flow_enabled"] = implicit_flow_enabled
            __props__.__dict__["import_"] = import_
            __props__.__dict__["login_theme"] = login_theme
            __props__.__dict__["name"] = name
            __props__.__dict__["oauth2_device_authorization_grant_enabled"] = oauth2_device_authorization_grant_enabled
            __props__.__dict__["oauth2_device_code_lifespan"] = oauth2_device_code_lifespan
            __props__.__dict__["oauth2_device_polling_interval"] = oauth2_device_polling_interval
            __props__.__dict__["pkce_code_challenge_method"] = pkce_code_challenge_method
            if realm_id is None and not opts.urn:
                raise TypeError("Missing required property 'realm_id'")
            __props__.__dict__["realm_id"] = realm_id
            __props__.__dict__["root_url"] = root_url
            __props__.__dict__["service_accounts_enabled"] = service_accounts_enabled
            __props__.__dict__["standard_flow_enabled"] = standard_flow_enabled
            __props__.__dict__["use_refresh_tokens"] = use_refresh_tokens
            __props__.__dict__["use_refresh_tokens_client_credentials"] = use_refresh_tokens_client_credentials
            __props__.__dict__["valid_post_logout_redirect_uris"] = valid_post_logout_redirect_uris
            __props__.__dict__["valid_redirect_uris"] = valid_redirect_uris
            __props__.__dict__["web_origins"] = web_origins
            __props__.__dict__["resource_server_id"] = None
            __props__.__dict__["service_account_user_id"] = None
        secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["clientSecret"])
        opts = pulumi.ResourceOptions.merge(opts, secret_opts)
        super(Client, __self__).__init__(
            'keycloak:openid/client:Client',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            access_token_lifespan: Optional[pulumi.Input[str]] = None,
            access_type: Optional[pulumi.Input[str]] = None,
            admin_url: Optional[pulumi.Input[str]] = None,
            authentication_flow_binding_overrides: Optional[pulumi.Input[Union['ClientAuthenticationFlowBindingOverridesArgs', 'ClientAuthenticationFlowBindingOverridesArgsDict']]] = None,
            authorization: Optional[pulumi.Input[Union['ClientAuthorizationArgs', 'ClientAuthorizationArgsDict']]] = None,
            backchannel_logout_revoke_offline_sessions: Optional[pulumi.Input[bool]] = None,
            backchannel_logout_session_required: Optional[pulumi.Input[bool]] = None,
            backchannel_logout_url: Optional[pulumi.Input[str]] = None,
            base_url: Optional[pulumi.Input[str]] = None,
            client_authenticator_type: Optional[pulumi.Input[str]] = None,
            client_id: Optional[pulumi.Input[str]] = None,
            client_offline_session_idle_timeout: Optional[pulumi.Input[str]] = None,
            client_offline_session_max_lifespan: Optional[pulumi.Input[str]] = None,
            client_secret: Optional[pulumi.Input[str]] = None,
            client_session_idle_timeout: Optional[pulumi.Input[str]] = None,
            client_session_max_lifespan: Optional[pulumi.Input[str]] = None,
            consent_required: Optional[pulumi.Input[bool]] = None,
            consent_screen_text: Optional[pulumi.Input[str]] = None,
            description: Optional[pulumi.Input[str]] = None,
            direct_access_grants_enabled: Optional[pulumi.Input[bool]] = None,
            display_on_consent_screen: Optional[pulumi.Input[bool]] = None,
            enabled: Optional[pulumi.Input[bool]] = None,
            exclude_session_state_from_auth_response: Optional[pulumi.Input[bool]] = None,
            extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            frontchannel_logout_enabled: Optional[pulumi.Input[bool]] = None,
            frontchannel_logout_url: Optional[pulumi.Input[str]] = None,
            full_scope_allowed: Optional[pulumi.Input[bool]] = None,
            implicit_flow_enabled: Optional[pulumi.Input[bool]] = None,
            import_: Optional[pulumi.Input[bool]] = None,
            login_theme: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            oauth2_device_authorization_grant_enabled: Optional[pulumi.Input[bool]] = None,
            oauth2_device_code_lifespan: Optional[pulumi.Input[str]] = None,
            oauth2_device_polling_interval: Optional[pulumi.Input[str]] = None,
            pkce_code_challenge_method: Optional[pulumi.Input[str]] = None,
            realm_id: Optional[pulumi.Input[str]] = None,
            resource_server_id: Optional[pulumi.Input[str]] = None,
            root_url: Optional[pulumi.Input[str]] = None,
            service_account_user_id: Optional[pulumi.Input[str]] = None,
            service_accounts_enabled: Optional[pulumi.Input[bool]] = None,
            standard_flow_enabled: Optional[pulumi.Input[bool]] = None,
            use_refresh_tokens: Optional[pulumi.Input[bool]] = None,
            use_refresh_tokens_client_credentials: Optional[pulumi.Input[bool]] = None,
            valid_post_logout_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            valid_redirect_uris: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            web_origins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'Client':
        """
        Get an existing Client resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ClientState.__new__(_ClientState)

        __props__.__dict__["access_token_lifespan"] = access_token_lifespan
        __props__.__dict__["access_type"] = access_type
        __props__.__dict__["admin_url"] = admin_url
        __props__.__dict__["authentication_flow_binding_overrides"] = authentication_flow_binding_overrides
        __props__.__dict__["authorization"] = authorization
        __props__.__dict__["backchannel_logout_revoke_offline_sessions"] = backchannel_logout_revoke_offline_sessions
        __props__.__dict__["backchannel_logout_session_required"] = backchannel_logout_session_required
        __props__.__dict__["backchannel_logout_url"] = backchannel_logout_url
        __props__.__dict__["base_url"] = base_url
        __props__.__dict__["client_authenticator_type"] = client_authenticator_type
        __props__.__dict__["client_id"] = client_id
        __props__.__dict__["client_offline_session_idle_timeout"] = client_offline_session_idle_timeout
        __props__.__dict__["client_offline_session_max_lifespan"] = client_offline_session_max_lifespan
        __props__.__dict__["client_secret"] = client_secret
        __props__.__dict__["client_session_idle_timeout"] = client_session_idle_timeout
        __props__.__dict__["client_session_max_lifespan"] = client_session_max_lifespan
        __props__.__dict__["consent_required"] = consent_required
        __props__.__dict__["consent_screen_text"] = consent_screen_text
        __props__.__dict__["description"] = description
        __props__.__dict__["direct_access_grants_enabled"] = direct_access_grants_enabled
        __props__.__dict__["display_on_consent_screen"] = display_on_consent_screen
        __props__.__dict__["enabled"] = enabled
        __props__.__dict__["exclude_session_state_from_auth_response"] = exclude_session_state_from_auth_response
        __props__.__dict__["extra_config"] = extra_config
        __props__.__dict__["frontchannel_logout_enabled"] = frontchannel_logout_enabled
        __props__.__dict__["frontchannel_logout_url"] = frontchannel_logout_url
        __props__.__dict__["full_scope_allowed"] = full_scope_allowed
        __props__.__dict__["implicit_flow_enabled"] = implicit_flow_enabled
        __props__.__dict__["import_"] = import_
        __props__.__dict__["login_theme"] = login_theme
        __props__.__dict__["name"] = name
        __props__.__dict__["oauth2_device_authorization_grant_enabled"] = oauth2_device_authorization_grant_enabled
        __props__.__dict__["oauth2_device_code_lifespan"] = oauth2_device_code_lifespan
        __props__.__dict__["oauth2_device_polling_interval"] = oauth2_device_polling_interval
        __props__.__dict__["pkce_code_challenge_method"] = pkce_code_challenge_method
        __props__.__dict__["realm_id"] = realm_id
        __props__.__dict__["resource_server_id"] = resource_server_id
        __props__.__dict__["root_url"] = root_url
        __props__.__dict__["service_account_user_id"] = service_account_user_id
        __props__.__dict__["service_accounts_enabled"] = service_accounts_enabled
        __props__.__dict__["standard_flow_enabled"] = standard_flow_enabled
        __props__.__dict__["use_refresh_tokens"] = use_refresh_tokens
        __props__.__dict__["use_refresh_tokens_client_credentials"] = use_refresh_tokens_client_credentials
        __props__.__dict__["valid_post_logout_redirect_uris"] = valid_post_logout_redirect_uris
        __props__.__dict__["valid_redirect_uris"] = valid_redirect_uris
        __props__.__dict__["web_origins"] = web_origins
        return Client(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accessTokenLifespan")
    def access_token_lifespan(self) -> pulumi.Output[str]:
        return pulumi.get(self, "access_token_lifespan")

    @property
    @pulumi.getter(name="accessType")
    def access_type(self) -> pulumi.Output[str]:
        return pulumi.get(self, "access_type")

    @property
    @pulumi.getter(name="adminUrl")
    def admin_url(self) -> pulumi.Output[str]:
        return pulumi.get(self, "admin_url")

    @property
    @pulumi.getter(name="authenticationFlowBindingOverrides")
    def authentication_flow_binding_overrides(self) -> pulumi.Output[Optional['outputs.ClientAuthenticationFlowBindingOverrides']]:
        return pulumi.get(self, "authentication_flow_binding_overrides")

    @property
    @pulumi.getter
    def authorization(self) -> pulumi.Output[Optional['outputs.ClientAuthorization']]:
        return pulumi.get(self, "authorization")

    @property
    @pulumi.getter(name="backchannelLogoutRevokeOfflineSessions")
    def backchannel_logout_revoke_offline_sessions(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "backchannel_logout_revoke_offline_sessions")

    @property
    @pulumi.getter(name="backchannelLogoutSessionRequired")
    def backchannel_logout_session_required(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "backchannel_logout_session_required")

    @property
    @pulumi.getter(name="backchannelLogoutUrl")
    def backchannel_logout_url(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "backchannel_logout_url")

    @property
    @pulumi.getter(name="baseUrl")
    def base_url(self) -> pulumi.Output[str]:
        return pulumi.get(self, "base_url")

    @property
    @pulumi.getter(name="clientAuthenticatorType")
    def client_authenticator_type(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "client_authenticator_type")

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientOfflineSessionIdleTimeout")
    def client_offline_session_idle_timeout(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_offline_session_idle_timeout")

    @property
    @pulumi.getter(name="clientOfflineSessionMaxLifespan")
    def client_offline_session_max_lifespan(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_offline_session_max_lifespan")

    @property
    @pulumi.getter(name="clientSecret")
    def client_secret(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_secret")

    @property
    @pulumi.getter(name="clientSessionIdleTimeout")
    def client_session_idle_timeout(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_session_idle_timeout")

    @property
    @pulumi.getter(name="clientSessionMaxLifespan")
    def client_session_max_lifespan(self) -> pulumi.Output[str]:
        return pulumi.get(self, "client_session_max_lifespan")

    @property
    @pulumi.getter(name="consentRequired")
    def consent_required(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "consent_required")

    @property
    @pulumi.getter(name="consentScreenText")
    def consent_screen_text(self) -> pulumi.Output[str]:
        return pulumi.get(self, "consent_screen_text")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[str]:
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="directAccessGrantsEnabled")
    def direct_access_grants_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "direct_access_grants_enabled")

    @property
    @pulumi.getter(name="displayOnConsentScreen")
    def display_on_consent_screen(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "display_on_consent_screen")

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="excludeSessionStateFromAuthResponse")
    def exclude_session_state_from_auth_response(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "exclude_session_state_from_auth_response")

    @property
    @pulumi.getter(name="extraConfig")
    def extra_config(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        return pulumi.get(self, "extra_config")

    @property
    @pulumi.getter(name="frontchannelLogoutEnabled")
    def frontchannel_logout_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "frontchannel_logout_enabled")

    @property
    @pulumi.getter(name="frontchannelLogoutUrl")
    def frontchannel_logout_url(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "frontchannel_logout_url")

    @property
    @pulumi.getter(name="fullScopeAllowed")
    def full_scope_allowed(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "full_scope_allowed")

    @property
    @pulumi.getter(name="implicitFlowEnabled")
    def implicit_flow_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "implicit_flow_enabled")

    @property
    @pulumi.getter(name="import")
    def import_(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "import_")

    @property
    @pulumi.getter(name="loginTheme")
    def login_theme(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "login_theme")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="oauth2DeviceAuthorizationGrantEnabled")
    def oauth2_device_authorization_grant_enabled(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "oauth2_device_authorization_grant_enabled")

    @property
    @pulumi.getter(name="oauth2DeviceCodeLifespan")
    def oauth2_device_code_lifespan(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "oauth2_device_code_lifespan")

    @property
    @pulumi.getter(name="oauth2DevicePollingInterval")
    def oauth2_device_polling_interval(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "oauth2_device_polling_interval")

    @property
    @pulumi.getter(name="pkceCodeChallengeMethod")
    def pkce_code_challenge_method(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "pkce_code_challenge_method")

    @property
    @pulumi.getter(name="realmId")
    def realm_id(self) -> pulumi.Output[str]:
        return pulumi.get(self, "realm_id")

    @property
    @pulumi.getter(name="resourceServerId")
    def resource_server_id(self) -> pulumi.Output[str]:
        return pulumi.get(self, "resource_server_id")

    @property
    @pulumi.getter(name="rootUrl")
    def root_url(self) -> pulumi.Output[str]:
        return pulumi.get(self, "root_url")

    @property
    @pulumi.getter(name="serviceAccountUserId")
    def service_account_user_id(self) -> pulumi.Output[str]:
        return pulumi.get(self, "service_account_user_id")

    @property
    @pulumi.getter(name="serviceAccountsEnabled")
    def service_accounts_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "service_accounts_enabled")

    @property
    @pulumi.getter(name="standardFlowEnabled")
    def standard_flow_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "standard_flow_enabled")

    @property
    @pulumi.getter(name="useRefreshTokens")
    def use_refresh_tokens(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "use_refresh_tokens")

    @property
    @pulumi.getter(name="useRefreshTokensClientCredentials")
    def use_refresh_tokens_client_credentials(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "use_refresh_tokens_client_credentials")

    @property
    @pulumi.getter(name="validPostLogoutRedirectUris")
    def valid_post_logout_redirect_uris(self) -> pulumi.Output[Sequence[str]]:
        return pulumi.get(self, "valid_post_logout_redirect_uris")

    @property
    @pulumi.getter(name="validRedirectUris")
    def valid_redirect_uris(self) -> pulumi.Output[Sequence[str]]:
        return pulumi.get(self, "valid_redirect_uris")

    @property
    @pulumi.getter(name="webOrigins")
    def web_origins(self) -> pulumi.Output[Sequence[str]]:
        return pulumi.get(self, "web_origins")

