# 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 sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities

__all__ = [
    'ProjectApplicationsArgs',
    'ProjectApplicationsArgsDict',
    'ProjectApplicationsOidcApplicationArgs',
    'ProjectApplicationsOidcApplicationArgsDict',
    'ProjectApplicationsSamlApplicationArgs',
    'ProjectApplicationsSamlApplicationArgsDict',
    'ProjectApplicationsSamlApplicationAttributeMappingArgs',
    'ProjectApplicationsSamlApplicationAttributeMappingArgsDict',
    'ProjectApplicationsSamlApplicationDynamicConfigurationArgs',
    'ProjectApplicationsSamlApplicationDynamicConfigurationArgsDict',
    'ProjectApplicationsSamlApplicationManualConfigurationArgs',
    'ProjectApplicationsSamlApplicationManualConfigurationArgsDict',
    'ProjectAttributesArgs',
    'ProjectAttributesArgsDict',
    'ProjectAttributesTenantArgs',
    'ProjectAttributesTenantArgsDict',
    'ProjectAttributesUserArgs',
    'ProjectAttributesUserArgsDict',
    'ProjectAttributesUserWidgetAuthorizationArgs',
    'ProjectAttributesUserWidgetAuthorizationArgsDict',
    'ProjectAuthenticationArgs',
    'ProjectAuthenticationArgsDict',
    'ProjectAuthenticationEmbeddedLinkArgs',
    'ProjectAuthenticationEmbeddedLinkArgsDict',
    'ProjectAuthenticationEnchantedLinkArgs',
    'ProjectAuthenticationEnchantedLinkArgsDict',
    'ProjectAuthenticationEnchantedLinkEmailServiceArgs',
    'ProjectAuthenticationEnchantedLinkEmailServiceArgsDict',
    'ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgs',
    'ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgsDict',
    'ProjectAuthenticationMagicLinkArgs',
    'ProjectAuthenticationMagicLinkArgsDict',
    'ProjectAuthenticationMagicLinkEmailServiceArgs',
    'ProjectAuthenticationMagicLinkEmailServiceArgsDict',
    'ProjectAuthenticationMagicLinkEmailServiceTemplateArgs',
    'ProjectAuthenticationMagicLinkEmailServiceTemplateArgsDict',
    'ProjectAuthenticationMagicLinkTextServiceArgs',
    'ProjectAuthenticationMagicLinkTextServiceArgsDict',
    'ProjectAuthenticationMagicLinkTextServiceTemplateArgs',
    'ProjectAuthenticationMagicLinkTextServiceTemplateArgsDict',
    'ProjectAuthenticationOauthArgs',
    'ProjectAuthenticationOauthArgsDict',
    'ProjectAuthenticationOauthCustomArgs',
    'ProjectAuthenticationOauthCustomArgsDict',
    'ProjectAuthenticationOauthCustomProviderTokenManagementArgs',
    'ProjectAuthenticationOauthCustomProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemArgs',
    'ProjectAuthenticationOauthSystemArgsDict',
    'ProjectAuthenticationOauthSystemAppleArgs',
    'ProjectAuthenticationOauthSystemAppleArgsDict',
    'ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemDiscordArgs',
    'ProjectAuthenticationOauthSystemDiscordArgsDict',
    'ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemFacebookArgs',
    'ProjectAuthenticationOauthSystemFacebookArgsDict',
    'ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemGithubArgs',
    'ProjectAuthenticationOauthSystemGithubArgsDict',
    'ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemGitlabArgs',
    'ProjectAuthenticationOauthSystemGitlabArgsDict',
    'ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemGoogleArgs',
    'ProjectAuthenticationOauthSystemGoogleArgsDict',
    'ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemLinkedinArgs',
    'ProjectAuthenticationOauthSystemLinkedinArgsDict',
    'ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemMicrosoftArgs',
    'ProjectAuthenticationOauthSystemMicrosoftArgsDict',
    'ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgsDict',
    'ProjectAuthenticationOauthSystemSlackArgs',
    'ProjectAuthenticationOauthSystemSlackArgsDict',
    'ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgs',
    'ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgsDict',
    'ProjectAuthenticationOtpArgs',
    'ProjectAuthenticationOtpArgsDict',
    'ProjectAuthenticationOtpEmailServiceArgs',
    'ProjectAuthenticationOtpEmailServiceArgsDict',
    'ProjectAuthenticationOtpEmailServiceTemplateArgs',
    'ProjectAuthenticationOtpEmailServiceTemplateArgsDict',
    'ProjectAuthenticationOtpTextServiceArgs',
    'ProjectAuthenticationOtpTextServiceArgsDict',
    'ProjectAuthenticationOtpTextServiceTemplateArgs',
    'ProjectAuthenticationOtpTextServiceTemplateArgsDict',
    'ProjectAuthenticationOtpVoiceServiceArgs',
    'ProjectAuthenticationOtpVoiceServiceArgsDict',
    'ProjectAuthenticationOtpVoiceServiceTemplateArgs',
    'ProjectAuthenticationOtpVoiceServiceTemplateArgsDict',
    'ProjectAuthenticationPasskeysArgs',
    'ProjectAuthenticationPasskeysArgsDict',
    'ProjectAuthenticationPasswordArgs',
    'ProjectAuthenticationPasswordArgsDict',
    'ProjectAuthenticationPasswordEmailServiceArgs',
    'ProjectAuthenticationPasswordEmailServiceArgsDict',
    'ProjectAuthenticationPasswordEmailServiceTemplateArgs',
    'ProjectAuthenticationPasswordEmailServiceTemplateArgsDict',
    'ProjectAuthenticationSsoArgs',
    'ProjectAuthenticationSsoArgsDict',
    'ProjectAuthenticationTotpArgs',
    'ProjectAuthenticationTotpArgsDict',
    'ProjectAuthorizationArgs',
    'ProjectAuthorizationArgsDict',
    'ProjectAuthorizationPermissionArgs',
    'ProjectAuthorizationPermissionArgsDict',
    'ProjectAuthorizationRoleArgs',
    'ProjectAuthorizationRoleArgsDict',
    'ProjectConnectorsArgs',
    'ProjectConnectorsArgsDict',
    'ProjectConnectorsAbuseipdbArgs',
    'ProjectConnectorsAbuseipdbArgsDict',
    'ProjectConnectorsAmplitudeArgs',
    'ProjectConnectorsAmplitudeArgsDict',
    'ProjectConnectorsAuditWebhookArgs',
    'ProjectConnectorsAuditWebhookArgsDict',
    'ProjectConnectorsAuditWebhookAuthenticationArgs',
    'ProjectConnectorsAuditWebhookAuthenticationArgsDict',
    'ProjectConnectorsAuditWebhookAuthenticationApiKeyArgs',
    'ProjectConnectorsAuditWebhookAuthenticationApiKeyArgsDict',
    'ProjectConnectorsAuditWebhookAuthenticationBasicArgs',
    'ProjectConnectorsAuditWebhookAuthenticationBasicArgsDict',
    'ProjectConnectorsAwsS3Args',
    'ProjectConnectorsAwsS3ArgsDict',
    'ProjectConnectorsAwsTranslateArgs',
    'ProjectConnectorsAwsTranslateArgsDict',
    'ProjectConnectorsClearArgs',
    'ProjectConnectorsClearArgsDict',
    'ProjectConnectorsDatadogArgs',
    'ProjectConnectorsDatadogArgsDict',
    'ProjectConnectorsDevrevGrowArgs',
    'ProjectConnectorsDevrevGrowArgsDict',
    'ProjectConnectorsDoceboArgs',
    'ProjectConnectorsDoceboArgsDict',
    'ProjectConnectorsFingerprintArgs',
    'ProjectConnectorsFingerprintArgsDict',
    'ProjectConnectorsFingerprintDescopeArgs',
    'ProjectConnectorsFingerprintDescopeArgsDict',
    'ProjectConnectorsForterArgs',
    'ProjectConnectorsForterArgsDict',
    'ProjectConnectorsGoogleCloudTranslationArgs',
    'ProjectConnectorsGoogleCloudTranslationArgsDict',
    'ProjectConnectorsHibpArgs',
    'ProjectConnectorsHibpArgsDict',
    'ProjectConnectorsHttpArgs',
    'ProjectConnectorsHttpArgsDict',
    'ProjectConnectorsHttpAuthenticationArgs',
    'ProjectConnectorsHttpAuthenticationArgsDict',
    'ProjectConnectorsHttpAuthenticationApiKeyArgs',
    'ProjectConnectorsHttpAuthenticationApiKeyArgsDict',
    'ProjectConnectorsHttpAuthenticationBasicArgs',
    'ProjectConnectorsHttpAuthenticationBasicArgsDict',
    'ProjectConnectorsHttpStaticIpArgs',
    'ProjectConnectorsHttpStaticIpArgsDict',
    'ProjectConnectorsHttpStaticIpAuthenticationArgs',
    'ProjectConnectorsHttpStaticIpAuthenticationArgsDict',
    'ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgs',
    'ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgsDict',
    'ProjectConnectorsHttpStaticIpAuthenticationBasicArgs',
    'ProjectConnectorsHttpStaticIpAuthenticationBasicArgsDict',
    'ProjectConnectorsHubspotArgs',
    'ProjectConnectorsHubspotArgsDict',
    'ProjectConnectorsIntercomArgs',
    'ProjectConnectorsIntercomArgsDict',
    'ProjectConnectorsNewrelicArgs',
    'ProjectConnectorsNewrelicArgsDict',
    'ProjectConnectorsRecaptchaArgs',
    'ProjectConnectorsRecaptchaArgsDict',
    'ProjectConnectorsRecaptchaEnterpriseArgs',
    'ProjectConnectorsRecaptchaEnterpriseArgsDict',
    'ProjectConnectorsRekognitionArgs',
    'ProjectConnectorsRekognitionArgsDict',
    'ProjectConnectorsSalesforceArgs',
    'ProjectConnectorsSalesforceArgsDict',
    'ProjectConnectorsSegmentArgs',
    'ProjectConnectorsSegmentArgsDict',
    'ProjectConnectorsSendgridArgs',
    'ProjectConnectorsSendgridArgsDict',
    'ProjectConnectorsSendgridAuthenticationArgs',
    'ProjectConnectorsSendgridAuthenticationArgsDict',
    'ProjectConnectorsSendgridSenderArgs',
    'ProjectConnectorsSendgridSenderArgsDict',
    'ProjectConnectorsSmtpArgs',
    'ProjectConnectorsSmtpArgsDict',
    'ProjectConnectorsSmtpAuthenticationArgs',
    'ProjectConnectorsSmtpAuthenticationArgsDict',
    'ProjectConnectorsSmtpSenderArgs',
    'ProjectConnectorsSmtpSenderArgsDict',
    'ProjectConnectorsSmtpServerArgs',
    'ProjectConnectorsSmtpServerArgsDict',
    'ProjectConnectorsSumologicArgs',
    'ProjectConnectorsSumologicArgsDict',
    'ProjectConnectorsTelesignArgs',
    'ProjectConnectorsTelesignArgsDict',
    'ProjectConnectorsTraceableArgs',
    'ProjectConnectorsTraceableArgsDict',
    'ProjectConnectorsTwilioCoreArgs',
    'ProjectConnectorsTwilioCoreArgsDict',
    'ProjectConnectorsTwilioCoreAuthenticationArgs',
    'ProjectConnectorsTwilioCoreAuthenticationArgsDict',
    'ProjectConnectorsTwilioCoreSendersArgs',
    'ProjectConnectorsTwilioCoreSendersArgsDict',
    'ProjectConnectorsTwilioCoreSendersSmsArgs',
    'ProjectConnectorsTwilioCoreSendersSmsArgsDict',
    'ProjectConnectorsTwilioCoreSendersVoiceArgs',
    'ProjectConnectorsTwilioCoreSendersVoiceArgsDict',
    'ProjectConnectorsTwilioVerifyArgs',
    'ProjectConnectorsTwilioVerifyArgsDict',
    'ProjectConnectorsTwilioVerifyAuthenticationArgs',
    'ProjectConnectorsTwilioVerifyAuthenticationArgsDict',
    'ProjectConnectorsVeriffArgs',
    'ProjectConnectorsVeriffArgsDict',
    'ProjectFlowsArgs',
    'ProjectFlowsArgsDict',
    'ProjectJwtTemplatesArgs',
    'ProjectJwtTemplatesArgsDict',
    'ProjectJwtTemplatesAccessKeyTemplateArgs',
    'ProjectJwtTemplatesAccessKeyTemplateArgsDict',
    'ProjectJwtTemplatesUserTemplateArgs',
    'ProjectJwtTemplatesUserTemplateArgsDict',
    'ProjectProjectSettingsArgs',
    'ProjectProjectSettingsArgsDict',
    'ProjectStylesArgs',
    'ProjectStylesArgsDict',
]

MYPY = False

if not MYPY:
    class ProjectApplicationsArgsDict(TypedDict):
        oidc_applications: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsOidcApplicationArgsDict']]]]
        """
        Applications using OpenID Connect (OIDC) for authentication.
        """
        saml_applications: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationArgsDict']]]]
        """
        Applications using SAML for authentication.
        """
elif False:
    ProjectApplicationsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsArgs:
    def __init__(__self__, *,
                 oidc_applications: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsOidcApplicationArgs']]]] = None,
                 saml_applications: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsOidcApplicationArgs']]] oidc_applications: Applications using OpenID Connect (OIDC) for authentication.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationArgs']]] saml_applications: Applications using SAML for authentication.
        """
        if oidc_applications is not None:
            pulumi.set(__self__, "oidc_applications", oidc_applications)
        if saml_applications is not None:
            pulumi.set(__self__, "saml_applications", saml_applications)

    @property
    @pulumi.getter(name="oidcApplications")
    def oidc_applications(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsOidcApplicationArgs']]]]:
        """
        Applications using OpenID Connect (OIDC) for authentication.
        """
        return pulumi.get(self, "oidc_applications")

    @oidc_applications.setter
    def oidc_applications(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsOidcApplicationArgs']]]]):
        pulumi.set(self, "oidc_applications", value)

    @property
    @pulumi.getter(name="samlApplications")
    def saml_applications(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationArgs']]]]:
        """
        Applications using SAML for authentication.
        """
        return pulumi.get(self, "saml_applications")

    @saml_applications.setter
    def saml_applications(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationArgs']]]]):
        pulumi.set(self, "saml_applications", value)


if not MYPY:
    class ProjectApplicationsOidcApplicationArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        The name of the application.
        """
        claims: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Claims associated with JWT tokens, typically used for user information.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the application.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        """
        Indicates whether the resource or functionality is disabled.
        """
        id: NotRequired[pulumi.Input[str]]
        """
        An optional identifier for the application.
        """
        login_page_url: NotRequired[pulumi.Input[str]]
        """
        The URL of the custom login page for the application.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the application.
        """
elif False:
    ProjectApplicationsOidcApplicationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsOidcApplicationArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 claims: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 login_page_url: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the application.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] claims: Claims associated with JWT tokens, typically used for user information.
        :param pulumi.Input[str] description: A brief description of the application.
        :param pulumi.Input[bool] disabled: Indicates whether the resource or functionality is disabled.
        :param pulumi.Input[str] id: An optional identifier for the application.
        :param pulumi.Input[str] login_page_url: The URL of the custom login page for the application.
        :param pulumi.Input[str] logo: The URL of the logo associated with the application.
        """
        pulumi.set(__self__, "name", name)
        if claims is not None:
            pulumi.set(__self__, "claims", claims)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if login_page_url is not None:
            pulumi.set(__self__, "login_page_url", login_page_url)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)

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

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

    @property
    @pulumi.getter
    def claims(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Claims associated with JWT tokens, typically used for user information.
        """
        return pulumi.get(self, "claims")

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

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

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

    @property
    @pulumi.getter
    def disabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether the resource or functionality is disabled.
        """
        return pulumi.get(self, "disabled")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        An optional identifier for the application.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="loginPageUrl")
    def login_page_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the custom login page for the application.
        """
        return pulumi.get(self, "login_page_url")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the application.
        """
        return pulumi.get(self, "logo")

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


if not MYPY:
    class ProjectApplicationsSamlApplicationArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        The name of the application.
        """
        acs_allowed_callback_urls: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        attribute_mappings: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationAttributeMappingArgsDict']]]]
        """
        Map user attributes from the third party identity provider to custom attributes in Descope.
        """
        default_relay_state: NotRequired[pulumi.Input[str]]
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the application.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        """
        Indicates whether the application is disabled.
        """
        dynamic_configuration: NotRequired[pulumi.Input['ProjectApplicationsSamlApplicationDynamicConfigurationArgsDict']]
        id: NotRequired[pulumi.Input[str]]
        """
        An optional identifier for the application.
        """
        login_page_url: NotRequired[pulumi.Input[str]]
        """
        The URL of the custom login page for the application.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the application.
        """
        manual_configuration: NotRequired[pulumi.Input['ProjectApplicationsSamlApplicationManualConfigurationArgsDict']]
        subject_name_id_format: NotRequired[pulumi.Input[str]]
        subject_name_id_type: NotRequired[pulumi.Input[str]]
elif False:
    ProjectApplicationsSamlApplicationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsSamlApplicationArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 acs_allowed_callback_urls: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 attribute_mappings: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationAttributeMappingArgs']]]] = None,
                 default_relay_state: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 dynamic_configuration: Optional[pulumi.Input['ProjectApplicationsSamlApplicationDynamicConfigurationArgs']] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 login_page_url: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 manual_configuration: Optional[pulumi.Input['ProjectApplicationsSamlApplicationManualConfigurationArgs']] = None,
                 subject_name_id_format: Optional[pulumi.Input[str]] = None,
                 subject_name_id_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the application.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationAttributeMappingArgs']]] attribute_mappings: Map user attributes from the third party identity provider to custom attributes in Descope.
        :param pulumi.Input[str] description: A brief description of the application.
        :param pulumi.Input[bool] disabled: Indicates whether the application is disabled.
        :param pulumi.Input[str] id: An optional identifier for the application.
        :param pulumi.Input[str] login_page_url: The URL of the custom login page for the application.
        :param pulumi.Input[str] logo: The URL of the logo associated with the application.
        """
        pulumi.set(__self__, "name", name)
        if acs_allowed_callback_urls is not None:
            pulumi.set(__self__, "acs_allowed_callback_urls", acs_allowed_callback_urls)
        if attribute_mappings is not None:
            pulumi.set(__self__, "attribute_mappings", attribute_mappings)
        if default_relay_state is not None:
            pulumi.set(__self__, "default_relay_state", default_relay_state)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if dynamic_configuration is not None:
            pulumi.set(__self__, "dynamic_configuration", dynamic_configuration)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if login_page_url is not None:
            pulumi.set(__self__, "login_page_url", login_page_url)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if manual_configuration is not None:
            pulumi.set(__self__, "manual_configuration", manual_configuration)
        if subject_name_id_format is not None:
            pulumi.set(__self__, "subject_name_id_format", subject_name_id_format)
        if subject_name_id_type is not None:
            pulumi.set(__self__, "subject_name_id_type", subject_name_id_type)

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

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

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

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

    @property
    @pulumi.getter(name="attributeMappings")
    def attribute_mappings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationAttributeMappingArgs']]]]:
        """
        Map user attributes from the third party identity provider to custom attributes in Descope.
        """
        return pulumi.get(self, "attribute_mappings")

    @attribute_mappings.setter
    def attribute_mappings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectApplicationsSamlApplicationAttributeMappingArgs']]]]):
        pulumi.set(self, "attribute_mappings", value)

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

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

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

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

    @property
    @pulumi.getter
    def disabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether the application is disabled.
        """
        return pulumi.get(self, "disabled")

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

    @property
    @pulumi.getter(name="dynamicConfiguration")
    def dynamic_configuration(self) -> Optional[pulumi.Input['ProjectApplicationsSamlApplicationDynamicConfigurationArgs']]:
        return pulumi.get(self, "dynamic_configuration")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        An optional identifier for the application.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="loginPageUrl")
    def login_page_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the custom login page for the application.
        """
        return pulumi.get(self, "login_page_url")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the application.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="manualConfiguration")
    def manual_configuration(self) -> Optional[pulumi.Input['ProjectApplicationsSamlApplicationManualConfigurationArgs']]:
        return pulumi.get(self, "manual_configuration")

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

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

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

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

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


if not MYPY:
    class ProjectApplicationsSamlApplicationAttributeMappingArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        The name of the user attribute in the third party identity provider.
        """
        value: pulumi.Input[str]
        """
        The name of the user custom attribute in Descope.
        """
elif False:
    ProjectApplicationsSamlApplicationAttributeMappingArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsSamlApplicationAttributeMappingArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 value: pulumi.Input[str]):
        """
        :param pulumi.Input[str] name: The name of the user attribute in the third party identity provider.
        :param pulumi.Input[str] value: The name of the user custom attribute in Descope.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The name of the user attribute in the third party identity provider.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        """
        The name of the user custom attribute in Descope.
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class ProjectApplicationsSamlApplicationDynamicConfigurationArgsDict(TypedDict):
        metadata_url: pulumi.Input[str]
elif False:
    ProjectApplicationsSamlApplicationDynamicConfigurationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsSamlApplicationDynamicConfigurationArgs:
    def __init__(__self__, *,
                 metadata_url: pulumi.Input[str]):
        pulumi.set(__self__, "metadata_url", metadata_url)

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

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


if not MYPY:
    class ProjectApplicationsSamlApplicationManualConfigurationArgsDict(TypedDict):
        acs_url: pulumi.Input[str]
        certificate: pulumi.Input[str]
        entity_id: pulumi.Input[str]
elif False:
    ProjectApplicationsSamlApplicationManualConfigurationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectApplicationsSamlApplicationManualConfigurationArgs:
    def __init__(__self__, *,
                 acs_url: pulumi.Input[str],
                 certificate: pulumi.Input[str],
                 entity_id: pulumi.Input[str]):
        pulumi.set(__self__, "acs_url", acs_url)
        pulumi.set(__self__, "certificate", certificate)
        pulumi.set(__self__, "entity_id", entity_id)

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

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

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

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

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

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


if not MYPY:
    class ProjectAttributesArgsDict(TypedDict):
        tenants: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesTenantArgsDict']]]]
        """
        Custom attributes to store additional details about your tenants.
        """
        users: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesUserArgsDict']]]]
        """
        Custom attributes to store additional details about your users.
        """
elif False:
    ProjectAttributesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAttributesArgs:
    def __init__(__self__, *,
                 tenants: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesTenantArgs']]]] = None,
                 users: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesUserArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ProjectAttributesTenantArgs']]] tenants: Custom attributes to store additional details about your tenants.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectAttributesUserArgs']]] users: Custom attributes to store additional details about your users.
        """
        if tenants is not None:
            pulumi.set(__self__, "tenants", tenants)
        if users is not None:
            pulumi.set(__self__, "users", users)

    @property
    @pulumi.getter
    def tenants(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesTenantArgs']]]]:
        """
        Custom attributes to store additional details about your tenants.
        """
        return pulumi.get(self, "tenants")

    @tenants.setter
    def tenants(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesTenantArgs']]]]):
        pulumi.set(self, "tenants", value)

    @property
    @pulumi.getter
    def users(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesUserArgs']]]]:
        """
        Custom attributes to store additional details about your users.
        """
        return pulumi.get(self, "users")

    @users.setter
    def users(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAttributesUserArgs']]]]):
        pulumi.set(self, "users", value)


if not MYPY:
    class ProjectAttributesTenantArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        The name of the tenant attribute.
        """
        type: pulumi.Input[str]
        """
        The type of the tenant attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        """
        select_options: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        A list of strings to define the set of options for select attributes.
        """
elif False:
    ProjectAttributesTenantArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAttributesTenantArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 type: pulumi.Input[str],
                 select_options: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] name: The name of the tenant attribute.
        :param pulumi.Input[str] type: The type of the tenant attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] select_options: A list of strings to define the set of options for select attributes.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        if select_options is not None:
            pulumi.set(__self__, "select_options", select_options)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The name of the tenant attribute.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        """
        The type of the tenant attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        """
        return pulumi.get(self, "type")

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

    @property
    @pulumi.getter(name="selectOptions")
    def select_options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of strings to define the set of options for select attributes.
        """
        return pulumi.get(self, "select_options")

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


if not MYPY:
    class ProjectAttributesUserArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        The name of the user attribute.
        """
        type: pulumi.Input[str]
        """
        The type of the user attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        """
        select_options: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        A list of strings to define the set of options for select attributes.
        """
        widget_authorization: NotRequired[pulumi.Input['ProjectAttributesUserWidgetAuthorizationArgsDict']]
        """
        When provided, viewing and editing the attribute values in widgets will be restricted to users with the specified permissions.
        """
elif False:
    ProjectAttributesUserArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAttributesUserArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 type: pulumi.Input[str],
                 select_options: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 widget_authorization: Optional[pulumi.Input['ProjectAttributesUserWidgetAuthorizationArgs']] = None):
        """
        :param pulumi.Input[str] name: The name of the user attribute.
        :param pulumi.Input[str] type: The type of the user attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] select_options: A list of strings to define the set of options for select attributes.
        :param pulumi.Input['ProjectAttributesUserWidgetAuthorizationArgs'] widget_authorization: When provided, viewing and editing the attribute values in widgets will be restricted to users with the specified permissions.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        if select_options is not None:
            pulumi.set(__self__, "select_options", select_options)
        if widget_authorization is not None:
            pulumi.set(__self__, "widget_authorization", widget_authorization)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The name of the user attribute.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        """
        The type of the user attribute. Valid valus are `string`, `number`, `boolean`, `date`, `singleselect`, and `multiselect`.
        """
        return pulumi.get(self, "type")

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

    @property
    @pulumi.getter(name="selectOptions")
    def select_options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of strings to define the set of options for select attributes.
        """
        return pulumi.get(self, "select_options")

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

    @property
    @pulumi.getter(name="widgetAuthorization")
    def widget_authorization(self) -> Optional[pulumi.Input['ProjectAttributesUserWidgetAuthorizationArgs']]:
        """
        When provided, viewing and editing the attribute values in widgets will be restricted to users with the specified permissions.
        """
        return pulumi.get(self, "widget_authorization")

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


if not MYPY:
    class ProjectAttributesUserWidgetAuthorizationArgsDict(TypedDict):
        edit_permissions: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Editing the attribute value in widgets will be restricted to users with the specified permissions.
        """
        view_permissions: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Viewing the attribute value in widgets will be restricted to users with the specified permissions.
        """
elif False:
    ProjectAttributesUserWidgetAuthorizationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAttributesUserWidgetAuthorizationArgs:
    def __init__(__self__, *,
                 edit_permissions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 view_permissions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] edit_permissions: Editing the attribute value in widgets will be restricted to users with the specified permissions.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] view_permissions: Viewing the attribute value in widgets will be restricted to users with the specified permissions.
        """
        if edit_permissions is not None:
            pulumi.set(__self__, "edit_permissions", edit_permissions)
        if view_permissions is not None:
            pulumi.set(__self__, "view_permissions", view_permissions)

    @property
    @pulumi.getter(name="editPermissions")
    def edit_permissions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Editing the attribute value in widgets will be restricted to users with the specified permissions.
        """
        return pulumi.get(self, "edit_permissions")

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

    @property
    @pulumi.getter(name="viewPermissions")
    def view_permissions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Viewing the attribute value in widgets will be restricted to users with the specified permissions.
        """
        return pulumi.get(self, "view_permissions")

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


if not MYPY:
    class ProjectAuthenticationArgsDict(TypedDict):
        embedded_link: NotRequired[pulumi.Input['ProjectAuthenticationEmbeddedLinkArgsDict']]
        """
        Make the authentication experience smoother for the user by generating their initial token in a way that does not require the end user to initiate the process, requiring only verification.
        """
        enchanted_link: NotRequired[pulumi.Input['ProjectAuthenticationEnchantedLinkArgsDict']]
        """
        An enhanced and more secure version of Magic Link, enabling users to start the authentication process on one device and execute the verification on another.
        """
        magic_link: NotRequired[pulumi.Input['ProjectAuthenticationMagicLinkArgsDict']]
        """
        An authentication method where a user receives a unique link via email to log in.
        """
        oauth: NotRequired[pulumi.Input['ProjectAuthenticationOauthArgsDict']]
        """
        Authentication using Open Authorization, which allows users to authenticate with various external services.
        """
        otp: NotRequired[pulumi.Input['ProjectAuthenticationOtpArgsDict']]
        """
        A dynamically generated set of numbers, granting the user one-time access.
        """
        passkeys: NotRequired[pulumi.Input['ProjectAuthenticationPasskeysArgsDict']]
        """
        Device-based passwordless authentication, using fingerprint, face scan, and more.
        """
        password: NotRequired[pulumi.Input['ProjectAuthenticationPasswordArgsDict']]
        """
        The classic username and password combination used for authentication.
        """
        sso: NotRequired[pulumi.Input['ProjectAuthenticationSsoArgsDict']]
        """
        Single Sign-On (SSO) authentication method that enables users to access multiple applications with a single set of credentials.
        """
        totp: NotRequired[pulumi.Input['ProjectAuthenticationTotpArgsDict']]
        """
        A one-time code generated for the user using a shared secret and time.
        """
elif False:
    ProjectAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationArgs:
    def __init__(__self__, *,
                 embedded_link: Optional[pulumi.Input['ProjectAuthenticationEmbeddedLinkArgs']] = None,
                 enchanted_link: Optional[pulumi.Input['ProjectAuthenticationEnchantedLinkArgs']] = None,
                 magic_link: Optional[pulumi.Input['ProjectAuthenticationMagicLinkArgs']] = None,
                 oauth: Optional[pulumi.Input['ProjectAuthenticationOauthArgs']] = None,
                 otp: Optional[pulumi.Input['ProjectAuthenticationOtpArgs']] = None,
                 passkeys: Optional[pulumi.Input['ProjectAuthenticationPasskeysArgs']] = None,
                 password: Optional[pulumi.Input['ProjectAuthenticationPasswordArgs']] = None,
                 sso: Optional[pulumi.Input['ProjectAuthenticationSsoArgs']] = None,
                 totp: Optional[pulumi.Input['ProjectAuthenticationTotpArgs']] = None):
        """
        :param pulumi.Input['ProjectAuthenticationEmbeddedLinkArgs'] embedded_link: Make the authentication experience smoother for the user by generating their initial token in a way that does not require the end user to initiate the process, requiring only verification.
        :param pulumi.Input['ProjectAuthenticationEnchantedLinkArgs'] enchanted_link: An enhanced and more secure version of Magic Link, enabling users to start the authentication process on one device and execute the verification on another.
        :param pulumi.Input['ProjectAuthenticationMagicLinkArgs'] magic_link: An authentication method where a user receives a unique link via email to log in.
        :param pulumi.Input['ProjectAuthenticationOauthArgs'] oauth: Authentication using Open Authorization, which allows users to authenticate with various external services.
        :param pulumi.Input['ProjectAuthenticationOtpArgs'] otp: A dynamically generated set of numbers, granting the user one-time access.
        :param pulumi.Input['ProjectAuthenticationPasskeysArgs'] passkeys: Device-based passwordless authentication, using fingerprint, face scan, and more.
        :param pulumi.Input['ProjectAuthenticationPasswordArgs'] password: The classic username and password combination used for authentication.
        :param pulumi.Input['ProjectAuthenticationSsoArgs'] sso: Single Sign-On (SSO) authentication method that enables users to access multiple applications with a single set of credentials.
        :param pulumi.Input['ProjectAuthenticationTotpArgs'] totp: A one-time code generated for the user using a shared secret and time.
        """
        if embedded_link is not None:
            pulumi.set(__self__, "embedded_link", embedded_link)
        if enchanted_link is not None:
            pulumi.set(__self__, "enchanted_link", enchanted_link)
        if magic_link is not None:
            pulumi.set(__self__, "magic_link", magic_link)
        if oauth is not None:
            pulumi.set(__self__, "oauth", oauth)
        if otp is not None:
            pulumi.set(__self__, "otp", otp)
        if passkeys is not None:
            pulumi.set(__self__, "passkeys", passkeys)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if sso is not None:
            pulumi.set(__self__, "sso", sso)
        if totp is not None:
            pulumi.set(__self__, "totp", totp)

    @property
    @pulumi.getter(name="embeddedLink")
    def embedded_link(self) -> Optional[pulumi.Input['ProjectAuthenticationEmbeddedLinkArgs']]:
        """
        Make the authentication experience smoother for the user by generating their initial token in a way that does not require the end user to initiate the process, requiring only verification.
        """
        return pulumi.get(self, "embedded_link")

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

    @property
    @pulumi.getter(name="enchantedLink")
    def enchanted_link(self) -> Optional[pulumi.Input['ProjectAuthenticationEnchantedLinkArgs']]:
        """
        An enhanced and more secure version of Magic Link, enabling users to start the authentication process on one device and execute the verification on another.
        """
        return pulumi.get(self, "enchanted_link")

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

    @property
    @pulumi.getter(name="magicLink")
    def magic_link(self) -> Optional[pulumi.Input['ProjectAuthenticationMagicLinkArgs']]:
        """
        An authentication method where a user receives a unique link via email to log in.
        """
        return pulumi.get(self, "magic_link")

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

    @property
    @pulumi.getter
    def oauth(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthArgs']]:
        """
        Authentication using Open Authorization, which allows users to authenticate with various external services.
        """
        return pulumi.get(self, "oauth")

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

    @property
    @pulumi.getter
    def otp(self) -> Optional[pulumi.Input['ProjectAuthenticationOtpArgs']]:
        """
        A dynamically generated set of numbers, granting the user one-time access.
        """
        return pulumi.get(self, "otp")

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

    @property
    @pulumi.getter
    def passkeys(self) -> Optional[pulumi.Input['ProjectAuthenticationPasskeysArgs']]:
        """
        Device-based passwordless authentication, using fingerprint, face scan, and more.
        """
        return pulumi.get(self, "passkeys")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input['ProjectAuthenticationPasswordArgs']]:
        """
        The classic username and password combination used for authentication.
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter
    def sso(self) -> Optional[pulumi.Input['ProjectAuthenticationSsoArgs']]:
        """
        Single Sign-On (SSO) authentication method that enables users to access multiple applications with a single set of credentials.
        """
        return pulumi.get(self, "sso")

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

    @property
    @pulumi.getter
    def totp(self) -> Optional[pulumi.Input['ProjectAuthenticationTotpArgs']]:
        """
        A one-time code generated for the user using a shared secret and time.
        """
        return pulumi.get(self, "totp")

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


if not MYPY:
    class ProjectAuthenticationEmbeddedLinkArgsDict(TypedDict):
        enabled: NotRequired[pulumi.Input[bool]]
        expiration_time: NotRequired[pulumi.Input[int]]
        """
        The amount of time that the embedded link will be valid for.
        """
        expiration_time_unit: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationEmbeddedLinkArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationEmbeddedLinkArgs:
    def __init__(__self__, *,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 expiration_time: Optional[pulumi.Input[int]] = None,
                 expiration_time_unit: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[int] expiration_time: The amount of time that the embedded link will be valid for.
        """
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if expiration_time is not None:
            pulumi.set(__self__, "expiration_time", expiration_time)
        if expiration_time_unit is not None:
            pulumi.set(__self__, "expiration_time_unit", expiration_time_unit)

    @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="expirationTime")
    def expiration_time(self) -> Optional[pulumi.Input[int]]:
        """
        The amount of time that the embedded link will be valid for.
        """
        return pulumi.get(self, "expiration_time")

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

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

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


if not MYPY:
    class ProjectAuthenticationEnchantedLinkArgsDict(TypedDict):
        email_service: NotRequired[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceArgsDict']]
        """
        Settings related to sending emails as part of the enchanted link authentication.
        """
        enabled: NotRequired[pulumi.Input[bool]]
        expiration_time: NotRequired[pulumi.Input[int]]
        expiration_time_unit: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
        """
        The URL to redirect users to after they log in using the enchanted link.
        """
elif False:
    ProjectAuthenticationEnchantedLinkArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationEnchantedLinkArgs:
    def __init__(__self__, *,
                 email_service: Optional[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceArgs']] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 expiration_time: Optional[pulumi.Input[int]] = None,
                 expiration_time_unit: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceArgs'] email_service: Settings related to sending emails as part of the enchanted link authentication.
        :param pulumi.Input[str] redirect_url: The URL to redirect users to after they log in using the enchanted link.
        """
        if email_service is not None:
            pulumi.set(__self__, "email_service", email_service)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if expiration_time is not None:
            pulumi.set(__self__, "expiration_time", expiration_time)
        if expiration_time_unit is not None:
            pulumi.set(__self__, "expiration_time_unit", expiration_time_unit)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

    @property
    @pulumi.getter(name="emailService")
    def email_service(self) -> Optional[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceArgs']]:
        """
        Settings related to sending emails as part of the enchanted link authentication.
        """
        return pulumi.get(self, "email_service")

    @email_service.setter
    def email_service(self, value: Optional[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceArgs']]):
        pulumi.set(self, "email_service", 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="expirationTime")
    def expiration_time(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "expiration_time")

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

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

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

    @property
    @pulumi.getter(name="redirectUrl")
    def redirect_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL to redirect users to after they log in using the enchanted link.
        """
        return pulumi.get(self, "redirect_url")

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


if not MYPY:
    class ProjectAuthenticationEnchantedLinkEmailServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationEnchantedLinkEmailServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationEnchantedLinkEmailServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        subject: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        html_body: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
        plain_text_body: NotRequired[pulumi.Input[str]]
        use_plain_text_body: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationEnchantedLinkEmailServiceTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 html_body: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 plain_text_body: Optional[pulumi.Input[str]] = None,
                 use_plain_text_body: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "subject", subject)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if html_body is not None:
            pulumi.set(__self__, "html_body", html_body)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if plain_text_body is not None:
            pulumi.set(__self__, "plain_text_body", plain_text_body)
        if use_plain_text_body is not None:
            pulumi.set(__self__, "use_plain_text_body", use_plain_text_body)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationMagicLinkArgsDict(TypedDict):
        email_service: NotRequired[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceArgsDict']]
        """
        Settings related to sending emails as part of the magic link authentication.
        """
        enabled: NotRequired[pulumi.Input[bool]]
        expiration_time: NotRequired[pulumi.Input[int]]
        expiration_time_unit: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
        """
        The URL to redirect users to after they log in using the magic link.
        """
        text_service: NotRequired[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceArgsDict']]
        """
        Settings related to sending SMS messages as part of the magic link authentication.
        """
elif False:
    ProjectAuthenticationMagicLinkArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationMagicLinkArgs:
    def __init__(__self__, *,
                 email_service: Optional[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceArgs']] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 expiration_time: Optional[pulumi.Input[int]] = None,
                 expiration_time_unit: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None,
                 text_service: Optional[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceArgs']] = None):
        """
        :param pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceArgs'] email_service: Settings related to sending emails as part of the magic link authentication.
        :param pulumi.Input[str] redirect_url: The URL to redirect users to after they log in using the magic link.
        :param pulumi.Input['ProjectAuthenticationMagicLinkTextServiceArgs'] text_service: Settings related to sending SMS messages as part of the magic link authentication.
        """
        if email_service is not None:
            pulumi.set(__self__, "email_service", email_service)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if expiration_time is not None:
            pulumi.set(__self__, "expiration_time", expiration_time)
        if expiration_time_unit is not None:
            pulumi.set(__self__, "expiration_time_unit", expiration_time_unit)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)
        if text_service is not None:
            pulumi.set(__self__, "text_service", text_service)

    @property
    @pulumi.getter(name="emailService")
    def email_service(self) -> Optional[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceArgs']]:
        """
        Settings related to sending emails as part of the magic link authentication.
        """
        return pulumi.get(self, "email_service")

    @email_service.setter
    def email_service(self, value: Optional[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceArgs']]):
        pulumi.set(self, "email_service", 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="expirationTime")
    def expiration_time(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "expiration_time")

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

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

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

    @property
    @pulumi.getter(name="redirectUrl")
    def redirect_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL to redirect users to after they log in using the magic link.
        """
        return pulumi.get(self, "redirect_url")

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

    @property
    @pulumi.getter(name="textService")
    def text_service(self) -> Optional[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceArgs']]:
        """
        Settings related to sending SMS messages as part of the magic link authentication.
        """
        return pulumi.get(self, "text_service")

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


if not MYPY:
    class ProjectAuthenticationMagicLinkEmailServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationMagicLinkEmailServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationMagicLinkEmailServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkEmailServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationMagicLinkEmailServiceTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        subject: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        html_body: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
        plain_text_body: NotRequired[pulumi.Input[str]]
        use_plain_text_body: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectAuthenticationMagicLinkEmailServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationMagicLinkEmailServiceTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 html_body: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 plain_text_body: Optional[pulumi.Input[str]] = None,
                 use_plain_text_body: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "subject", subject)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if html_body is not None:
            pulumi.set(__self__, "html_body", html_body)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if plain_text_body is not None:
            pulumi.set(__self__, "plain_text_body", plain_text_body)
        if use_plain_text_body is not None:
            pulumi.set(__self__, "use_plain_text_body", use_plain_text_body)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationMagicLinkTextServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationMagicLinkTextServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationMagicLinkTextServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationMagicLinkTextServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationMagicLinkTextServiceTemplateArgsDict(TypedDict):
        body: pulumi.Input[str]
        name: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationMagicLinkTextServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationMagicLinkTextServiceTemplateArgs:
    def __init__(__self__, *,
                 body: pulumi.Input[str],
                 name: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "name", name)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthArgsDict(TypedDict):
        custom: NotRequired[pulumi.Input[Mapping[str, pulumi.Input['ProjectAuthenticationOauthCustomArgsDict']]]]
        """
        Custom OAuth providers configured for this project.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        system: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemArgsDict']]
        """
        Custom configurations for builtin OAuth providers such as Apple, Google, GitHub, Facebook, etc.
        """
elif False:
    ProjectAuthenticationOauthArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthArgs:
    def __init__(__self__, *,
                 custom: Optional[pulumi.Input[Mapping[str, pulumi.Input['ProjectAuthenticationOauthCustomArgs']]]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 system: Optional[pulumi.Input['ProjectAuthenticationOauthSystemArgs']] = None):
        """
        :param pulumi.Input[Mapping[str, pulumi.Input['ProjectAuthenticationOauthCustomArgs']]] custom: Custom OAuth providers configured for this project.
        :param pulumi.Input['ProjectAuthenticationOauthSystemArgs'] system: Custom configurations for builtin OAuth providers such as Apple, Google, GitHub, Facebook, etc.
        """
        if custom is not None:
            pulumi.set(__self__, "custom", custom)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if system is not None:
            pulumi.set(__self__, "system", system)

    @property
    @pulumi.getter
    def custom(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input['ProjectAuthenticationOauthCustomArgs']]]]:
        """
        Custom OAuth providers configured for this project.
        """
        return pulumi.get(self, "custom")

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

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

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

    @property
    @pulumi.getter
    def system(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemArgs']]:
        """
        Custom configurations for builtin OAuth providers such as Apple, Google, GitHub, Facebook, etc.
        """
        return pulumi.get(self, "system")

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


if not MYPY:
    class ProjectAuthenticationOauthCustomArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthCustomProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthCustomArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthCustomArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthCustomProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthCustomProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthCustomProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthCustomProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthCustomProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthCustomProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemArgsDict(TypedDict):
        apple: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemAppleArgsDict']]
        """
        Apple's OAuth provider, allowing users to authenticate with their Apple Account.
        """
        discord: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemDiscordArgsDict']]
        """
        Discord's OAuth provider, allowing users to authenticate with their Discord account.
        """
        facebook: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemFacebookArgsDict']]
        """
        Facebook's OAuth provider, allowing users to authenticate with their Facebook account.
        """
        github: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGithubArgsDict']]
        """
        GitHub's OAuth provider, allowing users to authenticate with their GitHub account.
        """
        gitlab: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGitlabArgsDict']]
        """
        GitLab's OAuth provider, allowing users to authenticate with their GitLab account.
        """
        google: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGoogleArgsDict']]
        """
        Google's OAuth provider, allowing users to authenticate with their Google account.
        """
        linkedin: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinArgsDict']]
        """
        LinkedIn's OAuth provider, allowing users to authenticate with their LinkedIn account.
        """
        microsoft: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftArgsDict']]
        """
        Microsoft's OAuth provider, allowing users to authenticate with their Microsoft account.
        """
        slack: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemSlackArgsDict']]
        """
        Slack's OAuth provider, allowing users to authenticate with their Slack account.
        """
elif False:
    ProjectAuthenticationOauthSystemArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemArgs:
    def __init__(__self__, *,
                 apple: Optional[pulumi.Input['ProjectAuthenticationOauthSystemAppleArgs']] = None,
                 discord: Optional[pulumi.Input['ProjectAuthenticationOauthSystemDiscordArgs']] = None,
                 facebook: Optional[pulumi.Input['ProjectAuthenticationOauthSystemFacebookArgs']] = None,
                 github: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGithubArgs']] = None,
                 gitlab: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGitlabArgs']] = None,
                 google: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGoogleArgs']] = None,
                 linkedin: Optional[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinArgs']] = None,
                 microsoft: Optional[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftArgs']] = None,
                 slack: Optional[pulumi.Input['ProjectAuthenticationOauthSystemSlackArgs']] = None):
        """
        :param pulumi.Input['ProjectAuthenticationOauthSystemAppleArgs'] apple: Apple's OAuth provider, allowing users to authenticate with their Apple Account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemDiscordArgs'] discord: Discord's OAuth provider, allowing users to authenticate with their Discord account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemFacebookArgs'] facebook: Facebook's OAuth provider, allowing users to authenticate with their Facebook account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGithubArgs'] github: GitHub's OAuth provider, allowing users to authenticate with their GitHub account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGitlabArgs'] gitlab: GitLab's OAuth provider, allowing users to authenticate with their GitLab account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGoogleArgs'] google: Google's OAuth provider, allowing users to authenticate with their Google account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemLinkedinArgs'] linkedin: LinkedIn's OAuth provider, allowing users to authenticate with their LinkedIn account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftArgs'] microsoft: Microsoft's OAuth provider, allowing users to authenticate with their Microsoft account.
        :param pulumi.Input['ProjectAuthenticationOauthSystemSlackArgs'] slack: Slack's OAuth provider, allowing users to authenticate with their Slack account.
        """
        if apple is not None:
            pulumi.set(__self__, "apple", apple)
        if discord is not None:
            pulumi.set(__self__, "discord", discord)
        if facebook is not None:
            pulumi.set(__self__, "facebook", facebook)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if google is not None:
            pulumi.set(__self__, "google", google)
        if linkedin is not None:
            pulumi.set(__self__, "linkedin", linkedin)
        if microsoft is not None:
            pulumi.set(__self__, "microsoft", microsoft)
        if slack is not None:
            pulumi.set(__self__, "slack", slack)

    @property
    @pulumi.getter
    def apple(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemAppleArgs']]:
        """
        Apple's OAuth provider, allowing users to authenticate with their Apple Account.
        """
        return pulumi.get(self, "apple")

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

    @property
    @pulumi.getter
    def discord(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemDiscordArgs']]:
        """
        Discord's OAuth provider, allowing users to authenticate with their Discord account.
        """
        return pulumi.get(self, "discord")

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

    @property
    @pulumi.getter
    def facebook(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemFacebookArgs']]:
        """
        Facebook's OAuth provider, allowing users to authenticate with their Facebook account.
        """
        return pulumi.get(self, "facebook")

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

    @property
    @pulumi.getter
    def github(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGithubArgs']]:
        """
        GitHub's OAuth provider, allowing users to authenticate with their GitHub account.
        """
        return pulumi.get(self, "github")

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

    @property
    @pulumi.getter
    def gitlab(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGitlabArgs']]:
        """
        GitLab's OAuth provider, allowing users to authenticate with their GitLab account.
        """
        return pulumi.get(self, "gitlab")

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

    @property
    @pulumi.getter
    def google(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGoogleArgs']]:
        """
        Google's OAuth provider, allowing users to authenticate with their Google account.
        """
        return pulumi.get(self, "google")

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

    @property
    @pulumi.getter
    def linkedin(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinArgs']]:
        """
        LinkedIn's OAuth provider, allowing users to authenticate with their LinkedIn account.
        """
        return pulumi.get(self, "linkedin")

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

    @property
    @pulumi.getter
    def microsoft(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftArgs']]:
        """
        Microsoft's OAuth provider, allowing users to authenticate with their Microsoft account.
        """
        return pulumi.get(self, "microsoft")

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

    @property
    @pulumi.getter
    def slack(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemSlackArgs']]:
        """
        Slack's OAuth provider, allowing users to authenticate with their Slack account.
        """
        return pulumi.get(self, "slack")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemAppleArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemAppleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemAppleArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemAppleProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemDiscordArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemDiscordArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemDiscordArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemDiscordProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemFacebookArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemFacebookArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemFacebookArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemFacebookProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGithubArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemGithubArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGithubArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGithubProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGitlabArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemGitlabArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGitlabArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGitlabProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGoogleArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemGoogleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGoogleArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemGoogleProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemLinkedinArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemLinkedinArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemLinkedinArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemLinkedinProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemMicrosoftArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemMicrosoftArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemMicrosoftArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemMicrosoftProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOauthSystemSlackArgsDict(TypedDict):
        authorization_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        claim_mapping: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        client_id: NotRequired[pulumi.Input[str]]
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        client_secret: NotRequired[pulumi.Input[str]]
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A brief description of the OAuth provider.
        """
        disabled: NotRequired[pulumi.Input[bool]]
        grant_type: NotRequired[pulumi.Input[str]]
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        issuer: NotRequired[pulumi.Input[str]]
        jwks_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        logo: NotRequired[pulumi.Input[str]]
        """
        The URL of the logo associated with the OAuth provider.
        """
        merge_user_accounts: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        prompts: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        provider_token_management: NotRequired[pulumi.Input['ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgsDict']]
        """
        Settings related to token management for the OAuth provider.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        token_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        user_info_endpoint: NotRequired[pulumi.Input[str]]
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
elif False:
    ProjectAuthenticationOauthSystemSlackArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemSlackArgs:
    def __init__(__self__, *,
                 authorization_endpoint: Optional[pulumi.Input[str]] = None,
                 claim_mapping: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 client_id: Optional[pulumi.Input[str]] = None,
                 client_secret: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 disabled: Optional[pulumi.Input[bool]] = None,
                 grant_type: Optional[pulumi.Input[str]] = None,
                 issuer: Optional[pulumi.Input[str]] = None,
                 jwks_endpoint: Optional[pulumi.Input[str]] = None,
                 logo: Optional[pulumi.Input[str]] = None,
                 merge_user_accounts: Optional[pulumi.Input[bool]] = None,
                 prompts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 provider_token_management: Optional[pulumi.Input['ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgs']] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 token_endpoint: Optional[pulumi.Input[str]] = None,
                 user_info_endpoint: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] authorization_endpoint: The URL that users are redirected to for authorization with the OAuth provider.
        :param pulumi.Input[str] client_id: The client ID for the OAuth provider, used to identify the application to the provider.
        :param pulumi.Input[str] client_secret: The client secret for the OAuth provider, used to authenticate the application with the provider.
        :param pulumi.Input[str] description: A brief description of the OAuth provider.
        :param pulumi.Input[str] grant_type: The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        :param pulumi.Input[str] jwks_endpoint: The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        :param pulumi.Input[str] logo: The URL of the logo associated with the OAuth provider.
        :param pulumi.Input[bool] merge_user_accounts: Whether to merge existing user accounts with new ones created through OAuth authentication.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] prompts: Custom prompts or consent screens that users may see during OAuth authentication.
        :param pulumi.Input['ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgs'] provider_token_management: Settings related to token management for the OAuth provider.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] scopes: Scopes of access that the application requests from the user's account on the OAuth provider.
        :param pulumi.Input[str] token_endpoint: The URL where the application requests an access token from the OAuth provider.
        :param pulumi.Input[str] user_info_endpoint: The URL where the application retrieves user information from the OAuth provider.
        """
        if authorization_endpoint is not None:
            pulumi.set(__self__, "authorization_endpoint", authorization_endpoint)
        if claim_mapping is not None:
            pulumi.set(__self__, "claim_mapping", claim_mapping)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret is not None:
            pulumi.set(__self__, "client_secret", client_secret)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disabled is not None:
            pulumi.set(__self__, "disabled", disabled)
        if grant_type is not None:
            pulumi.set(__self__, "grant_type", grant_type)
        if issuer is not None:
            pulumi.set(__self__, "issuer", issuer)
        if jwks_endpoint is not None:
            pulumi.set(__self__, "jwks_endpoint", jwks_endpoint)
        if logo is not None:
            pulumi.set(__self__, "logo", logo)
        if merge_user_accounts is not None:
            pulumi.set(__self__, "merge_user_accounts", merge_user_accounts)
        if prompts is not None:
            pulumi.set(__self__, "prompts", prompts)
        if provider_token_management is not None:
            pulumi.set(__self__, "provider_token_management", provider_token_management)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if token_endpoint is not None:
            pulumi.set(__self__, "token_endpoint", token_endpoint)
        if user_info_endpoint is not None:
            pulumi.set(__self__, "user_info_endpoint", user_info_endpoint)

    @property
    @pulumi.getter(name="authorizationEndpoint")
    def authorization_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL that users are redirected to for authorization with the OAuth provider.
        """
        return pulumi.get(self, "authorization_endpoint")

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

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[pulumi.Input[str]]:
        """
        The client ID for the OAuth provider, used to identify the application to the provider.
        """
        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="clientSecret")
    def client_secret(self) -> Optional[pulumi.Input[str]]:
        """
        The client secret for the OAuth provider, used to authenticate the application with the provider.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A brief description of the OAuth provider.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="grantType")
    def grant_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of grant (`authorization_code` or `implicit`) to use when requesting access tokens from the OAuth provider.
        """
        return pulumi.get(self, "grant_type")

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

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

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

    @property
    @pulumi.getter(name="jwksEndpoint")
    def jwks_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application can retrieve JSON Web Key Sets (JWKS) for the OAuth provider.
        """
        return pulumi.get(self, "jwks_endpoint")

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

    @property
    @pulumi.getter
    def logo(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the logo associated with the OAuth provider.
        """
        return pulumi.get(self, "logo")

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

    @property
    @pulumi.getter(name="mergeUserAccounts")
    def merge_user_accounts(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through OAuth authentication.
        """
        return pulumi.get(self, "merge_user_accounts")

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

    @property
    @pulumi.getter
    def prompts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Custom prompts or consent screens that users may see during OAuth authentication.
        """
        return pulumi.get(self, "prompts")

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

    @property
    @pulumi.getter(name="providerTokenManagement")
    def provider_token_management(self) -> Optional[pulumi.Input['ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgs']]:
        """
        Settings related to token management for the OAuth provider.
        """
        return pulumi.get(self, "provider_token_management")

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

    @property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Scopes of access that the application requests from the user's account on the OAuth provider.
        """
        return pulumi.get(self, "scopes")

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

    @property
    @pulumi.getter(name="tokenEndpoint")
    def token_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application requests an access token from the OAuth provider.
        """
        return pulumi.get(self, "token_endpoint")

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

    @property
    @pulumi.getter(name="userInfoEndpoint")
    def user_info_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The URL where the application retrieves user information from the OAuth provider.
        """
        return pulumi.get(self, "user_info_endpoint")

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


if not MYPY:
    class ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgsDict(TypedDict):
        callback_domain: NotRequired[pulumi.Input[str]]
        redirect_url: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOauthSystemSlackProviderTokenManagementArgs:
    def __init__(__self__, *,
                 callback_domain: Optional[pulumi.Input[str]] = None,
                 redirect_url: Optional[pulumi.Input[str]] = None):
        if callback_domain is not None:
            pulumi.set(__self__, "callback_domain", callback_domain)
        if redirect_url is not None:
            pulumi.set(__self__, "redirect_url", redirect_url)

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOtpArgsDict(TypedDict):
        domain: NotRequired[pulumi.Input[str]]
        """
        The domain to embed in OTP messages.
        """
        email_service: NotRequired[pulumi.Input['ProjectAuthenticationOtpEmailServiceArgsDict']]
        """
        Settings related to sending emails with OTP codes.
        """
        enabled: NotRequired[pulumi.Input[bool]]
        expiration_time: NotRequired[pulumi.Input[int]]
        """
        The amount of time that an OTP code will be valid for.
        """
        expiration_time_unit: NotRequired[pulumi.Input[str]]
        text_service: NotRequired[pulumi.Input['ProjectAuthenticationOtpTextServiceArgsDict']]
        """
        Settings related to sending SMS messages with OTP codes.
        """
        voice_service: NotRequired[pulumi.Input['ProjectAuthenticationOtpVoiceServiceArgsDict']]
        """
        Settings related to voice calls with OTP codes.
        """
elif False:
    ProjectAuthenticationOtpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpArgs:
    def __init__(__self__, *,
                 domain: Optional[pulumi.Input[str]] = None,
                 email_service: Optional[pulumi.Input['ProjectAuthenticationOtpEmailServiceArgs']] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 expiration_time: Optional[pulumi.Input[int]] = None,
                 expiration_time_unit: Optional[pulumi.Input[str]] = None,
                 text_service: Optional[pulumi.Input['ProjectAuthenticationOtpTextServiceArgs']] = None,
                 voice_service: Optional[pulumi.Input['ProjectAuthenticationOtpVoiceServiceArgs']] = None):
        """
        :param pulumi.Input[str] domain: The domain to embed in OTP messages.
        :param pulumi.Input['ProjectAuthenticationOtpEmailServiceArgs'] email_service: Settings related to sending emails with OTP codes.
        :param pulumi.Input[int] expiration_time: The amount of time that an OTP code will be valid for.
        :param pulumi.Input['ProjectAuthenticationOtpTextServiceArgs'] text_service: Settings related to sending SMS messages with OTP codes.
        :param pulumi.Input['ProjectAuthenticationOtpVoiceServiceArgs'] voice_service: Settings related to voice calls with OTP codes.
        """
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if email_service is not None:
            pulumi.set(__self__, "email_service", email_service)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if expiration_time is not None:
            pulumi.set(__self__, "expiration_time", expiration_time)
        if expiration_time_unit is not None:
            pulumi.set(__self__, "expiration_time_unit", expiration_time_unit)
        if text_service is not None:
            pulumi.set(__self__, "text_service", text_service)
        if voice_service is not None:
            pulumi.set(__self__, "voice_service", voice_service)

    @property
    @pulumi.getter
    def domain(self) -> Optional[pulumi.Input[str]]:
        """
        The domain to embed in OTP messages.
        """
        return pulumi.get(self, "domain")

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

    @property
    @pulumi.getter(name="emailService")
    def email_service(self) -> Optional[pulumi.Input['ProjectAuthenticationOtpEmailServiceArgs']]:
        """
        Settings related to sending emails with OTP codes.
        """
        return pulumi.get(self, "email_service")

    @email_service.setter
    def email_service(self, value: Optional[pulumi.Input['ProjectAuthenticationOtpEmailServiceArgs']]):
        pulumi.set(self, "email_service", 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="expirationTime")
    def expiration_time(self) -> Optional[pulumi.Input[int]]:
        """
        The amount of time that an OTP code will be valid for.
        """
        return pulumi.get(self, "expiration_time")

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

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

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

    @property
    @pulumi.getter(name="textService")
    def text_service(self) -> Optional[pulumi.Input['ProjectAuthenticationOtpTextServiceArgs']]:
        """
        Settings related to sending SMS messages with OTP codes.
        """
        return pulumi.get(self, "text_service")

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

    @property
    @pulumi.getter(name="voiceService")
    def voice_service(self) -> Optional[pulumi.Input['ProjectAuthenticationOtpVoiceServiceArgs']]:
        """
        Settings related to voice calls with OTP codes.
        """
        return pulumi.get(self, "voice_service")

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


if not MYPY:
    class ProjectAuthenticationOtpEmailServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpEmailServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationOtpEmailServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpEmailServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpEmailServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpEmailServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationOtpEmailServiceTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        subject: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        html_body: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
        plain_text_body: NotRequired[pulumi.Input[str]]
        use_plain_text_body: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectAuthenticationOtpEmailServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpEmailServiceTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 html_body: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 plain_text_body: Optional[pulumi.Input[str]] = None,
                 use_plain_text_body: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "subject", subject)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if html_body is not None:
            pulumi.set(__self__, "html_body", html_body)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if plain_text_body is not None:
            pulumi.set(__self__, "plain_text_body", plain_text_body)
        if use_plain_text_body is not None:
            pulumi.set(__self__, "use_plain_text_body", use_plain_text_body)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOtpTextServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpTextServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationOtpTextServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpTextServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpTextServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpTextServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationOtpTextServiceTemplateArgsDict(TypedDict):
        body: pulumi.Input[str]
        name: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOtpTextServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpTextServiceTemplateArgs:
    def __init__(__self__, *,
                 body: pulumi.Input[str],
                 name: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "name", name)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationOtpVoiceServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpVoiceServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationOtpVoiceServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpVoiceServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpVoiceServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationOtpVoiceServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationOtpVoiceServiceTemplateArgsDict(TypedDict):
        body: pulumi.Input[str]
        name: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthenticationOtpVoiceServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationOtpVoiceServiceTemplateArgs:
    def __init__(__self__, *,
                 body: pulumi.Input[str],
                 name: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "name", name)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationPasskeysArgsDict(TypedDict):
        enabled: NotRequired[pulumi.Input[bool]]
        top_level_domain: NotRequired[pulumi.Input[str]]
        """
        Passkeys will be usable in the following domain and all its subdomains.
        """
elif False:
    ProjectAuthenticationPasskeysArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationPasskeysArgs:
    def __init__(__self__, *,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 top_level_domain: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] top_level_domain: Passkeys will be usable in the following domain and all its subdomains.
        """
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if top_level_domain is not None:
            pulumi.set(__self__, "top_level_domain", top_level_domain)

    @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="topLevelDomain")
    def top_level_domain(self) -> Optional[pulumi.Input[str]]:
        """
        Passkeys will be usable in the following domain and all its subdomains.
        """
        return pulumi.get(self, "top_level_domain")

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


if not MYPY:
    class ProjectAuthenticationPasswordArgsDict(TypedDict):
        email_service: NotRequired[pulumi.Input['ProjectAuthenticationPasswordEmailServiceArgsDict']]
        """
        Settings related to sending password reset emails as part of the password feature.
        """
        enabled: NotRequired[pulumi.Input[bool]]
        expiration: NotRequired[pulumi.Input[bool]]
        """
        Whether users are required to change their password periodically.
        """
        expiration_weeks: NotRequired[pulumi.Input[int]]
        """
        The number of weeks after which a user's password expires and they need to replace it.
        """
        lock: NotRequired[pulumi.Input[bool]]
        """
        Whether the user account should be locked after a specified number of failed login attempts.
        """
        lock_attempts: NotRequired[pulumi.Input[int]]
        """
        The number of failed login attempts allowed before an account is locked.
        """
        lowercase: NotRequired[pulumi.Input[bool]]
        """
        Whether passwords must contain at least one lowercase letter.
        """
        min_length: NotRequired[pulumi.Input[int]]
        """
        The minimum length of the password that users are required to use. The maximum length is always `64`.
        """
        non_alphanumeric: NotRequired[pulumi.Input[bool]]
        """
        Whether passwords must contain at least one non-alphanumeric character (e.g. `!`, `@`, `#`).
        """
        number: NotRequired[pulumi.Input[bool]]
        """
        Whether passwords must contain at least one number.
        """
        reuse: NotRequired[pulumi.Input[bool]]
        """
        Whether to forbid password reuse when users change their password.
        """
        reuse_amount: NotRequired[pulumi.Input[int]]
        uppercase: NotRequired[pulumi.Input[bool]]
        """
        Whether passwords must contain at least one uppercase letter.
        """
elif False:
    ProjectAuthenticationPasswordArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationPasswordArgs:
    def __init__(__self__, *,
                 email_service: Optional[pulumi.Input['ProjectAuthenticationPasswordEmailServiceArgs']] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 expiration: Optional[pulumi.Input[bool]] = None,
                 expiration_weeks: Optional[pulumi.Input[int]] = None,
                 lock: Optional[pulumi.Input[bool]] = None,
                 lock_attempts: Optional[pulumi.Input[int]] = None,
                 lowercase: Optional[pulumi.Input[bool]] = None,
                 min_length: Optional[pulumi.Input[int]] = None,
                 non_alphanumeric: Optional[pulumi.Input[bool]] = None,
                 number: Optional[pulumi.Input[bool]] = None,
                 reuse: Optional[pulumi.Input[bool]] = None,
                 reuse_amount: Optional[pulumi.Input[int]] = None,
                 uppercase: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input['ProjectAuthenticationPasswordEmailServiceArgs'] email_service: Settings related to sending password reset emails as part of the password feature.
        :param pulumi.Input[bool] expiration: Whether users are required to change their password periodically.
        :param pulumi.Input[int] expiration_weeks: The number of weeks after which a user's password expires and they need to replace it.
        :param pulumi.Input[bool] lock: Whether the user account should be locked after a specified number of failed login attempts.
        :param pulumi.Input[int] lock_attempts: The number of failed login attempts allowed before an account is locked.
        :param pulumi.Input[bool] lowercase: Whether passwords must contain at least one lowercase letter.
        :param pulumi.Input[int] min_length: The minimum length of the password that users are required to use. The maximum length is always `64`.
        :param pulumi.Input[bool] non_alphanumeric: Whether passwords must contain at least one non-alphanumeric character (e.g. `!`, `@`, `#`).
        :param pulumi.Input[bool] number: Whether passwords must contain at least one number.
        :param pulumi.Input[bool] reuse: Whether to forbid password reuse when users change their password.
        :param pulumi.Input[bool] uppercase: Whether passwords must contain at least one uppercase letter.
        """
        if email_service is not None:
            pulumi.set(__self__, "email_service", email_service)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if expiration is not None:
            pulumi.set(__self__, "expiration", expiration)
        if expiration_weeks is not None:
            pulumi.set(__self__, "expiration_weeks", expiration_weeks)
        if lock is not None:
            pulumi.set(__self__, "lock", lock)
        if lock_attempts is not None:
            pulumi.set(__self__, "lock_attempts", lock_attempts)
        if lowercase is not None:
            pulumi.set(__self__, "lowercase", lowercase)
        if min_length is not None:
            pulumi.set(__self__, "min_length", min_length)
        if non_alphanumeric is not None:
            pulumi.set(__self__, "non_alphanumeric", non_alphanumeric)
        if number is not None:
            pulumi.set(__self__, "number", number)
        if reuse is not None:
            pulumi.set(__self__, "reuse", reuse)
        if reuse_amount is not None:
            pulumi.set(__self__, "reuse_amount", reuse_amount)
        if uppercase is not None:
            pulumi.set(__self__, "uppercase", uppercase)

    @property
    @pulumi.getter(name="emailService")
    def email_service(self) -> Optional[pulumi.Input['ProjectAuthenticationPasswordEmailServiceArgs']]:
        """
        Settings related to sending password reset emails as part of the password feature.
        """
        return pulumi.get(self, "email_service")

    @email_service.setter
    def email_service(self, value: Optional[pulumi.Input['ProjectAuthenticationPasswordEmailServiceArgs']]):
        pulumi.set(self, "email_service", 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
    def expiration(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether users are required to change their password periodically.
        """
        return pulumi.get(self, "expiration")

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

    @property
    @pulumi.getter(name="expirationWeeks")
    def expiration_weeks(self) -> Optional[pulumi.Input[int]]:
        """
        The number of weeks after which a user's password expires and they need to replace it.
        """
        return pulumi.get(self, "expiration_weeks")

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

    @property
    @pulumi.getter
    def lock(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the user account should be locked after a specified number of failed login attempts.
        """
        return pulumi.get(self, "lock")

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

    @property
    @pulumi.getter(name="lockAttempts")
    def lock_attempts(self) -> Optional[pulumi.Input[int]]:
        """
        The number of failed login attempts allowed before an account is locked.
        """
        return pulumi.get(self, "lock_attempts")

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

    @property
    @pulumi.getter
    def lowercase(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether passwords must contain at least one lowercase letter.
        """
        return pulumi.get(self, "lowercase")

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

    @property
    @pulumi.getter(name="minLength")
    def min_length(self) -> Optional[pulumi.Input[int]]:
        """
        The minimum length of the password that users are required to use. The maximum length is always `64`.
        """
        return pulumi.get(self, "min_length")

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

    @property
    @pulumi.getter(name="nonAlphanumeric")
    def non_alphanumeric(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether passwords must contain at least one non-alphanumeric character (e.g. `!`, `@`, `#`).
        """
        return pulumi.get(self, "non_alphanumeric")

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

    @property
    @pulumi.getter
    def number(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether passwords must contain at least one number.
        """
        return pulumi.get(self, "number")

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

    @property
    @pulumi.getter
    def reuse(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to forbid password reuse when users change their password.
        """
        return pulumi.get(self, "reuse")

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

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

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

    @property
    @pulumi.getter
    def uppercase(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether passwords must contain at least one uppercase letter.
        """
        return pulumi.get(self, "uppercase")

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


if not MYPY:
    class ProjectAuthenticationPasswordEmailServiceArgsDict(TypedDict):
        connector: pulumi.Input[str]
        templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationPasswordEmailServiceTemplateArgsDict']]]]
elif False:
    ProjectAuthenticationPasswordEmailServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationPasswordEmailServiceArgs:
    def __init__(__self__, *,
                 connector: pulumi.Input[str],
                 templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationPasswordEmailServiceTemplateArgs']]]] = None):
        pulumi.set(__self__, "connector", connector)
        if templates is not None:
            pulumi.set(__self__, "templates", templates)

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

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

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

    @templates.setter
    def templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthenticationPasswordEmailServiceTemplateArgs']]]]):
        pulumi.set(self, "templates", value)


if not MYPY:
    class ProjectAuthenticationPasswordEmailServiceTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        subject: pulumi.Input[str]
        active: NotRequired[pulumi.Input[bool]]
        html_body: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
        plain_text_body: NotRequired[pulumi.Input[str]]
        use_plain_text_body: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectAuthenticationPasswordEmailServiceTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationPasswordEmailServiceTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 html_body: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 plain_text_body: Optional[pulumi.Input[str]] = None,
                 use_plain_text_body: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "subject", subject)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if html_body is not None:
            pulumi.set(__self__, "html_body", html_body)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if plain_text_body is not None:
            pulumi.set(__self__, "plain_text_body", plain_text_body)
        if use_plain_text_body is not None:
            pulumi.set(__self__, "use_plain_text_body", use_plain_text_body)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectAuthenticationSsoArgsDict(TypedDict):
        enabled: NotRequired[pulumi.Input[bool]]
        merge_users: NotRequired[pulumi.Input[bool]]
        """
        Whether to merge existing user accounts with new ones created through SSO authentication.
        """
elif False:
    ProjectAuthenticationSsoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationSsoArgs:
    def __init__(__self__, *,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 merge_users: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[bool] merge_users: Whether to merge existing user accounts with new ones created through SSO authentication.
        """
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if merge_users is not None:
            pulumi.set(__self__, "merge_users", merge_users)

    @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="mergeUsers")
    def merge_users(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to merge existing user accounts with new ones created through SSO authentication.
        """
        return pulumi.get(self, "merge_users")

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


if not MYPY:
    class ProjectAuthenticationTotpArgsDict(TypedDict):
        enabled: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectAuthenticationTotpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthenticationTotpArgs:
    def __init__(__self__, *,
                 enabled: Optional[pulumi.Input[bool]] = None):
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)

    @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)


if not MYPY:
    class ProjectAuthorizationArgsDict(TypedDict):
        permissions: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationPermissionArgsDict']]]]
        roles: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationRoleArgsDict']]]]
elif False:
    ProjectAuthorizationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthorizationArgs:
    def __init__(__self__, *,
                 permissions: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationPermissionArgs']]]] = None,
                 roles: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationRoleArgs']]]] = None):
        if permissions is not None:
            pulumi.set(__self__, "permissions", permissions)
        if roles is not None:
            pulumi.set(__self__, "roles", roles)

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

    @permissions.setter
    def permissions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationPermissionArgs']]]]):
        pulumi.set(self, "permissions", value)

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

    @roles.setter
    def roles(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectAuthorizationRoleArgs']]]]):
        pulumi.set(self, "roles", value)


if not MYPY:
    class ProjectAuthorizationPermissionArgsDict(TypedDict):
        name: pulumi.Input[str]
        description: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectAuthorizationPermissionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthorizationPermissionArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", 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
    def id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "id")

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


if not MYPY:
    class ProjectAuthorizationRoleArgsDict(TypedDict):
        name: pulumi.Input[str]
        description: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
        permissions: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
elif False:
    ProjectAuthorizationRoleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectAuthorizationRoleArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 permissions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if permissions is not None:
            pulumi.set(__self__, "permissions", permissions)

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

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", 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
    def id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "id")

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

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

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


if not MYPY:
    class ProjectConnectorsArgsDict(TypedDict):
        abuseipdbs: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAbuseipdbArgsDict']]]]
        """
        AbuseIPDB provides an API to identify if an IP address has been associated with malicious activities online.
        """
        amplitudes: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAmplitudeArgsDict']]]]
        """
        Amplitude, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        """
        audit_webhooks: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAuditWebhookArgsDict']]]]
        aws_s3s: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsS3ArgsDict']]]]
        aws_translates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsTranslateArgsDict']]]]
        clears: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsClearArgsDict']]]]
        """
        An identity verification platform that allow customers to digitally verify their identity from anywhere.
        """
        datadogs: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDatadogArgsDict']]]]
        """
        Datadog, an observability service for cloud-scale applications, providing monitoring of servers, databases, tools, and services, through a SaaS-based data analytics platform.
        """
        devrev_grows: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDevrevGrowArgsDict']]]]
        docebos: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDoceboArgsDict']]]]
        """
        Docebo is a cloud-based Learning Management System (LMS) designed to increase performance and learning engagement.
        """
        fingerprint_descopes: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintDescopeArgsDict']]]]
        fingerprints: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintArgsDict']]]]
        """
        Use the Fingerprint (formerly FingerprintJS) connector to add device intelligence and prevent fraud.
        """
        forters: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsForterArgsDict']]]]
        """
        Use the Forter connector for account fraud prevention.
        """
        google_cloud_translations: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsGoogleCloudTranslationArgsDict']]]]
        hibps: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHibpArgsDict']]]]
        """
        API to check if password appeared previously exposed in data breaches.
        """
        http_static_ips: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpStaticIpArgsDict']]]]
        https: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpArgsDict']]]]
        """
        A general purpose HTTP client
        """
        hubspots: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHubspotArgsDict']]]]
        """
        HubSpot is a CRM platform with software, integrations, and resources needed to connect marketing, sales, content management, and customer service.
        """
        intercoms: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsIntercomArgsDict']]]]
        """
        Intercom is a Conversational Relationship Platform (CRP).
        """
        newrelics: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsNewrelicArgsDict']]]]
        """
        Use this connector to send audit events and troubleshooting logs to New Relic.
        """
        recaptcha_enterprises: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaEnterpriseArgsDict']]]]
        recaptchas: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaArgsDict']]]]
        """
        reCAPTCHA is a free google service that protects your site from spam and abuse. It uses advanced risk analysis techniques to tell humans and bots apart.
        """
        rekognitions: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRekognitionArgsDict']]]]
        """
        AWS Rekognition, cloud-based AI service that offers computer vision capabilities for analyzing and processing images. Useful for registration and verification processes, and can be used to detect fraud and prevent identity theft.
        """
        salesforces: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSalesforceArgsDict']]]]
        """
        Salesforce is a leading cloud-based Customer Relationship Management (CRM) platform that helps businesses streamline their sales, service, and marketing operations.
        """
        segments: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSegmentArgsDict']]]]
        """
        Segment, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        """
        sendgrids: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSendgridArgsDict']]]]
        smtps: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSmtpArgsDict']]]]
        sumologics: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSumologicArgsDict']]]]
        """
        Sumo Logic, fast troubleshooting and investigation with AI/ML-powered log analytics
        """
        telesigns: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTelesignArgsDict']]]]
        """
        Telesign Phone number intelligence API provides risk score for phone numbers.
        """
        traceables: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTraceableArgsDict']]]]
        """
        API security for a cloud-first, API-driven world.
        """
        twilio_cores: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioCoreArgsDict']]]]
        twilio_verifies: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioVerifyArgsDict']]]]
        veriffs: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsVeriffArgsDict']]]]
        """
        AI-powered identity verification solution for identity fraud prevention, Know Your Customer compliance, and fast conversions of valuable customers.
        """
elif False:
    ProjectConnectorsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsArgs:
    def __init__(__self__, *,
                 abuseipdbs: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAbuseipdbArgs']]]] = None,
                 amplitudes: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAmplitudeArgs']]]] = None,
                 audit_webhooks: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAuditWebhookArgs']]]] = None,
                 aws_s3s: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsS3Args']]]] = None,
                 aws_translates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsTranslateArgs']]]] = None,
                 clears: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsClearArgs']]]] = None,
                 datadogs: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDatadogArgs']]]] = None,
                 devrev_grows: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDevrevGrowArgs']]]] = None,
                 docebos: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDoceboArgs']]]] = None,
                 fingerprint_descopes: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintDescopeArgs']]]] = None,
                 fingerprints: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintArgs']]]] = None,
                 forters: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsForterArgs']]]] = None,
                 google_cloud_translations: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsGoogleCloudTranslationArgs']]]] = None,
                 hibps: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHibpArgs']]]] = None,
                 http_static_ips: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpStaticIpArgs']]]] = None,
                 https: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpArgs']]]] = None,
                 hubspots: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHubspotArgs']]]] = None,
                 intercoms: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsIntercomArgs']]]] = None,
                 newrelics: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsNewrelicArgs']]]] = None,
                 recaptcha_enterprises: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaEnterpriseArgs']]]] = None,
                 recaptchas: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaArgs']]]] = None,
                 rekognitions: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRekognitionArgs']]]] = None,
                 salesforces: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSalesforceArgs']]]] = None,
                 segments: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSegmentArgs']]]] = None,
                 sendgrids: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSendgridArgs']]]] = None,
                 smtps: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSmtpArgs']]]] = None,
                 sumologics: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSumologicArgs']]]] = None,
                 telesigns: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTelesignArgs']]]] = None,
                 traceables: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTraceableArgs']]]] = None,
                 twilio_cores: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioCoreArgs']]]] = None,
                 twilio_verifies: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioVerifyArgs']]]] = None,
                 veriffs: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsVeriffArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAbuseipdbArgs']]] abuseipdbs: AbuseIPDB provides an API to identify if an IP address has been associated with malicious activities online.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAmplitudeArgs']]] amplitudes: Amplitude, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsClearArgs']]] clears: An identity verification platform that allow customers to digitally verify their identity from anywhere.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDatadogArgs']]] datadogs: Datadog, an observability service for cloud-scale applications, providing monitoring of servers, databases, tools, and services, through a SaaS-based data analytics platform.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDoceboArgs']]] docebos: Docebo is a cloud-based Learning Management System (LMS) designed to increase performance and learning engagement.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintArgs']]] fingerprints: Use the Fingerprint (formerly FingerprintJS) connector to add device intelligence and prevent fraud.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsForterArgs']]] forters: Use the Forter connector for account fraud prevention.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHibpArgs']]] hibps: API to check if password appeared previously exposed in data breaches.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpArgs']]] https: A general purpose HTTP client
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHubspotArgs']]] hubspots: HubSpot is a CRM platform with software, integrations, and resources needed to connect marketing, sales, content management, and customer service.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsIntercomArgs']]] intercoms: Intercom is a Conversational Relationship Platform (CRP).
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsNewrelicArgs']]] newrelics: Use this connector to send audit events and troubleshooting logs to New Relic.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaArgs']]] recaptchas: reCAPTCHA is a free google service that protects your site from spam and abuse. It uses advanced risk analysis techniques to tell humans and bots apart.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRekognitionArgs']]] rekognitions: AWS Rekognition, cloud-based AI service that offers computer vision capabilities for analyzing and processing images. Useful for registration and verification processes, and can be used to detect fraud and prevent identity theft.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSalesforceArgs']]] salesforces: Salesforce is a leading cloud-based Customer Relationship Management (CRM) platform that helps businesses streamline their sales, service, and marketing operations.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSegmentArgs']]] segments: Segment, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSumologicArgs']]] sumologics: Sumo Logic, fast troubleshooting and investigation with AI/ML-powered log analytics
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTelesignArgs']]] telesigns: Telesign Phone number intelligence API provides risk score for phone numbers.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTraceableArgs']]] traceables: API security for a cloud-first, API-driven world.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsVeriffArgs']]] veriffs: AI-powered identity verification solution for identity fraud prevention, Know Your Customer compliance, and fast conversions of valuable customers.
        """
        if abuseipdbs is not None:
            pulumi.set(__self__, "abuseipdbs", abuseipdbs)
        if amplitudes is not None:
            pulumi.set(__self__, "amplitudes", amplitudes)
        if audit_webhooks is not None:
            pulumi.set(__self__, "audit_webhooks", audit_webhooks)
        if aws_s3s is not None:
            pulumi.set(__self__, "aws_s3s", aws_s3s)
        if aws_translates is not None:
            pulumi.set(__self__, "aws_translates", aws_translates)
        if clears is not None:
            pulumi.set(__self__, "clears", clears)
        if datadogs is not None:
            pulumi.set(__self__, "datadogs", datadogs)
        if devrev_grows is not None:
            pulumi.set(__self__, "devrev_grows", devrev_grows)
        if docebos is not None:
            pulumi.set(__self__, "docebos", docebos)
        if fingerprint_descopes is not None:
            pulumi.set(__self__, "fingerprint_descopes", fingerprint_descopes)
        if fingerprints is not None:
            pulumi.set(__self__, "fingerprints", fingerprints)
        if forters is not None:
            pulumi.set(__self__, "forters", forters)
        if google_cloud_translations is not None:
            pulumi.set(__self__, "google_cloud_translations", google_cloud_translations)
        if hibps is not None:
            pulumi.set(__self__, "hibps", hibps)
        if http_static_ips is not None:
            pulumi.set(__self__, "http_static_ips", http_static_ips)
        if https is not None:
            pulumi.set(__self__, "https", https)
        if hubspots is not None:
            pulumi.set(__self__, "hubspots", hubspots)
        if intercoms is not None:
            pulumi.set(__self__, "intercoms", intercoms)
        if newrelics is not None:
            pulumi.set(__self__, "newrelics", newrelics)
        if recaptcha_enterprises is not None:
            pulumi.set(__self__, "recaptcha_enterprises", recaptcha_enterprises)
        if recaptchas is not None:
            pulumi.set(__self__, "recaptchas", recaptchas)
        if rekognitions is not None:
            pulumi.set(__self__, "rekognitions", rekognitions)
        if salesforces is not None:
            pulumi.set(__self__, "salesforces", salesforces)
        if segments is not None:
            pulumi.set(__self__, "segments", segments)
        if sendgrids is not None:
            pulumi.set(__self__, "sendgrids", sendgrids)
        if smtps is not None:
            pulumi.set(__self__, "smtps", smtps)
        if sumologics is not None:
            pulumi.set(__self__, "sumologics", sumologics)
        if telesigns is not None:
            pulumi.set(__self__, "telesigns", telesigns)
        if traceables is not None:
            pulumi.set(__self__, "traceables", traceables)
        if twilio_cores is not None:
            pulumi.set(__self__, "twilio_cores", twilio_cores)
        if twilio_verifies is not None:
            pulumi.set(__self__, "twilio_verifies", twilio_verifies)
        if veriffs is not None:
            pulumi.set(__self__, "veriffs", veriffs)

    @property
    @pulumi.getter
    def abuseipdbs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAbuseipdbArgs']]]]:
        """
        AbuseIPDB provides an API to identify if an IP address has been associated with malicious activities online.
        """
        return pulumi.get(self, "abuseipdbs")

    @abuseipdbs.setter
    def abuseipdbs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAbuseipdbArgs']]]]):
        pulumi.set(self, "abuseipdbs", value)

    @property
    @pulumi.getter
    def amplitudes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAmplitudeArgs']]]]:
        """
        Amplitude, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        """
        return pulumi.get(self, "amplitudes")

    @amplitudes.setter
    def amplitudes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAmplitudeArgs']]]]):
        pulumi.set(self, "amplitudes", value)

    @property
    @pulumi.getter(name="auditWebhooks")
    def audit_webhooks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAuditWebhookArgs']]]]:
        return pulumi.get(self, "audit_webhooks")

    @audit_webhooks.setter
    def audit_webhooks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAuditWebhookArgs']]]]):
        pulumi.set(self, "audit_webhooks", value)

    @property
    @pulumi.getter(name="awsS3s")
    def aws_s3s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsS3Args']]]]:
        return pulumi.get(self, "aws_s3s")

    @aws_s3s.setter
    def aws_s3s(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsS3Args']]]]):
        pulumi.set(self, "aws_s3s", value)

    @property
    @pulumi.getter(name="awsTranslates")
    def aws_translates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsTranslateArgs']]]]:
        return pulumi.get(self, "aws_translates")

    @aws_translates.setter
    def aws_translates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsAwsTranslateArgs']]]]):
        pulumi.set(self, "aws_translates", value)

    @property
    @pulumi.getter
    def clears(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsClearArgs']]]]:
        """
        An identity verification platform that allow customers to digitally verify their identity from anywhere.
        """
        return pulumi.get(self, "clears")

    @clears.setter
    def clears(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsClearArgs']]]]):
        pulumi.set(self, "clears", value)

    @property
    @pulumi.getter
    def datadogs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDatadogArgs']]]]:
        """
        Datadog, an observability service for cloud-scale applications, providing monitoring of servers, databases, tools, and services, through a SaaS-based data analytics platform.
        """
        return pulumi.get(self, "datadogs")

    @datadogs.setter
    def datadogs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDatadogArgs']]]]):
        pulumi.set(self, "datadogs", value)

    @property
    @pulumi.getter(name="devrevGrows")
    def devrev_grows(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDevrevGrowArgs']]]]:
        return pulumi.get(self, "devrev_grows")

    @devrev_grows.setter
    def devrev_grows(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDevrevGrowArgs']]]]):
        pulumi.set(self, "devrev_grows", value)

    @property
    @pulumi.getter
    def docebos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDoceboArgs']]]]:
        """
        Docebo is a cloud-based Learning Management System (LMS) designed to increase performance and learning engagement.
        """
        return pulumi.get(self, "docebos")

    @docebos.setter
    def docebos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsDoceboArgs']]]]):
        pulumi.set(self, "docebos", value)

    @property
    @pulumi.getter(name="fingerprintDescopes")
    def fingerprint_descopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintDescopeArgs']]]]:
        return pulumi.get(self, "fingerprint_descopes")

    @fingerprint_descopes.setter
    def fingerprint_descopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintDescopeArgs']]]]):
        pulumi.set(self, "fingerprint_descopes", value)

    @property
    @pulumi.getter
    def fingerprints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintArgs']]]]:
        """
        Use the Fingerprint (formerly FingerprintJS) connector to add device intelligence and prevent fraud.
        """
        return pulumi.get(self, "fingerprints")

    @fingerprints.setter
    def fingerprints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsFingerprintArgs']]]]):
        pulumi.set(self, "fingerprints", value)

    @property
    @pulumi.getter
    def forters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsForterArgs']]]]:
        """
        Use the Forter connector for account fraud prevention.
        """
        return pulumi.get(self, "forters")

    @forters.setter
    def forters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsForterArgs']]]]):
        pulumi.set(self, "forters", value)

    @property
    @pulumi.getter(name="googleCloudTranslations")
    def google_cloud_translations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsGoogleCloudTranslationArgs']]]]:
        return pulumi.get(self, "google_cloud_translations")

    @google_cloud_translations.setter
    def google_cloud_translations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsGoogleCloudTranslationArgs']]]]):
        pulumi.set(self, "google_cloud_translations", value)

    @property
    @pulumi.getter
    def hibps(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHibpArgs']]]]:
        """
        API to check if password appeared previously exposed in data breaches.
        """
        return pulumi.get(self, "hibps")

    @hibps.setter
    def hibps(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHibpArgs']]]]):
        pulumi.set(self, "hibps", value)

    @property
    @pulumi.getter(name="httpStaticIps")
    def http_static_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpStaticIpArgs']]]]:
        return pulumi.get(self, "http_static_ips")

    @http_static_ips.setter
    def http_static_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpStaticIpArgs']]]]):
        pulumi.set(self, "http_static_ips", value)

    @property
    @pulumi.getter
    def https(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpArgs']]]]:
        """
        A general purpose HTTP client
        """
        return pulumi.get(self, "https")

    @https.setter
    def https(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHttpArgs']]]]):
        pulumi.set(self, "https", value)

    @property
    @pulumi.getter
    def hubspots(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHubspotArgs']]]]:
        """
        HubSpot is a CRM platform with software, integrations, and resources needed to connect marketing, sales, content management, and customer service.
        """
        return pulumi.get(self, "hubspots")

    @hubspots.setter
    def hubspots(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsHubspotArgs']]]]):
        pulumi.set(self, "hubspots", value)

    @property
    @pulumi.getter
    def intercoms(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsIntercomArgs']]]]:
        """
        Intercom is a Conversational Relationship Platform (CRP).
        """
        return pulumi.get(self, "intercoms")

    @intercoms.setter
    def intercoms(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsIntercomArgs']]]]):
        pulumi.set(self, "intercoms", value)

    @property
    @pulumi.getter
    def newrelics(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsNewrelicArgs']]]]:
        """
        Use this connector to send audit events and troubleshooting logs to New Relic.
        """
        return pulumi.get(self, "newrelics")

    @newrelics.setter
    def newrelics(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsNewrelicArgs']]]]):
        pulumi.set(self, "newrelics", value)

    @property
    @pulumi.getter(name="recaptchaEnterprises")
    def recaptcha_enterprises(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaEnterpriseArgs']]]]:
        return pulumi.get(self, "recaptcha_enterprises")

    @recaptcha_enterprises.setter
    def recaptcha_enterprises(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaEnterpriseArgs']]]]):
        pulumi.set(self, "recaptcha_enterprises", value)

    @property
    @pulumi.getter
    def recaptchas(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaArgs']]]]:
        """
        reCAPTCHA is a free google service that protects your site from spam and abuse. It uses advanced risk analysis techniques to tell humans and bots apart.
        """
        return pulumi.get(self, "recaptchas")

    @recaptchas.setter
    def recaptchas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRecaptchaArgs']]]]):
        pulumi.set(self, "recaptchas", value)

    @property
    @pulumi.getter
    def rekognitions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRekognitionArgs']]]]:
        """
        AWS Rekognition, cloud-based AI service that offers computer vision capabilities for analyzing and processing images. Useful for registration and verification processes, and can be used to detect fraud and prevent identity theft.
        """
        return pulumi.get(self, "rekognitions")

    @rekognitions.setter
    def rekognitions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsRekognitionArgs']]]]):
        pulumi.set(self, "rekognitions", value)

    @property
    @pulumi.getter
    def salesforces(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSalesforceArgs']]]]:
        """
        Salesforce is a leading cloud-based Customer Relationship Management (CRM) platform that helps businesses streamline their sales, service, and marketing operations.
        """
        return pulumi.get(self, "salesforces")

    @salesforces.setter
    def salesforces(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSalesforceArgs']]]]):
        pulumi.set(self, "salesforces", value)

    @property
    @pulumi.getter
    def segments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSegmentArgs']]]]:
        """
        Segment, an analytics product that allows you to collects events from web and mobile apps, unify those and use those to better understand your customers needs.
        """
        return pulumi.get(self, "segments")

    @segments.setter
    def segments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSegmentArgs']]]]):
        pulumi.set(self, "segments", value)

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

    @sendgrids.setter
    def sendgrids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSendgridArgs']]]]):
        pulumi.set(self, "sendgrids", value)

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

    @smtps.setter
    def smtps(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSmtpArgs']]]]):
        pulumi.set(self, "smtps", value)

    @property
    @pulumi.getter
    def sumologics(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSumologicArgs']]]]:
        """
        Sumo Logic, fast troubleshooting and investigation with AI/ML-powered log analytics
        """
        return pulumi.get(self, "sumologics")

    @sumologics.setter
    def sumologics(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsSumologicArgs']]]]):
        pulumi.set(self, "sumologics", value)

    @property
    @pulumi.getter
    def telesigns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTelesignArgs']]]]:
        """
        Telesign Phone number intelligence API provides risk score for phone numbers.
        """
        return pulumi.get(self, "telesigns")

    @telesigns.setter
    def telesigns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTelesignArgs']]]]):
        pulumi.set(self, "telesigns", value)

    @property
    @pulumi.getter
    def traceables(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTraceableArgs']]]]:
        """
        API security for a cloud-first, API-driven world.
        """
        return pulumi.get(self, "traceables")

    @traceables.setter
    def traceables(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTraceableArgs']]]]):
        pulumi.set(self, "traceables", value)

    @property
    @pulumi.getter(name="twilioCores")
    def twilio_cores(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioCoreArgs']]]]:
        return pulumi.get(self, "twilio_cores")

    @twilio_cores.setter
    def twilio_cores(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioCoreArgs']]]]):
        pulumi.set(self, "twilio_cores", value)

    @property
    @pulumi.getter(name="twilioVerifies")
    def twilio_verifies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioVerifyArgs']]]]:
        return pulumi.get(self, "twilio_verifies")

    @twilio_verifies.setter
    def twilio_verifies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsTwilioVerifyArgs']]]]):
        pulumi.set(self, "twilio_verifies", value)

    @property
    @pulumi.getter
    def veriffs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsVeriffArgs']]]]:
        """
        AI-powered identity verification solution for identity fraud prevention, Know Your Customer compliance, and fast conversions of valuable customers.
        """
        return pulumi.get(self, "veriffs")

    @veriffs.setter
    def veriffs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectConnectorsVeriffArgs']]]]):
        pulumi.set(self, "veriffs", value)


if not MYPY:
    class ProjectConnectorsAbuseipdbArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        The unique AbuseIPDB API key.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsAbuseipdbArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAbuseipdbArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: The unique AbuseIPDB API key.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        The unique AbuseIPDB API key.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsAmplitudeArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        The Amplitude API Key generated for the Descope service.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        server_url: NotRequired[pulumi.Input[str]]
        """
        The server URL of the Amplitude API, when using different api or a custom domain in Amplitude.
        """
        server_zone: NotRequired[pulumi.Input[str]]
        """
        `EU` or `US`. Sets the Amplitude server zone. Set this to `EU` for Amplitude projects created in `EU` data center. Default is `US`.
        """
elif False:
    ProjectConnectorsAmplitudeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAmplitudeArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 server_url: Optional[pulumi.Input[str]] = None,
                 server_zone: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: The Amplitude API Key generated for the Descope service.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] server_url: The server URL of the Amplitude API, when using different api or a custom domain in Amplitude.
        :param pulumi.Input[str] server_zone: `EU` or `US`. Sets the Amplitude server zone. Set this to `EU` for Amplitude projects created in `EU` data center. Default is `US`.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if server_url is not None:
            pulumi.set(__self__, "server_url", server_url)
        if server_zone is not None:
            pulumi.set(__self__, "server_zone", server_zone)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        The Amplitude API Key generated for the Descope service.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="serverUrl")
    def server_url(self) -> Optional[pulumi.Input[str]]:
        """
        The server URL of the Amplitude API, when using different api or a custom domain in Amplitude.
        """
        return pulumi.get(self, "server_url")

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

    @property
    @pulumi.getter(name="serverZone")
    def server_zone(self) -> Optional[pulumi.Input[str]]:
        """
        `EU` or `US`. Sets the Amplitude server zone. Set this to `EU` for Amplitude projects created in `EU` data center. Default is `US`.
        """
        return pulumi.get(self, "server_zone")

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


if not MYPY:
    class ProjectConnectorsAuditWebhookArgsDict(TypedDict):
        base_url: pulumi.Input[str]
        """
        The base URL to fetch
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        audit_filters: NotRequired[pulumi.Input[str]]
        """
        Specify which events will be sent to the external audit service (including tenant selection).
        """
        authentication: NotRequired[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationArgsDict']]
        """
        Authentication Information
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        headers: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        """
        The headers to send with the request
        """
        hmac_secret: NotRequired[pulumi.Input[str]]
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        id: NotRequired[pulumi.Input[str]]
        insecure: NotRequired[pulumi.Input[bool]]
        """
        Will ignore certificate errors raised by the client
        """
elif False:
    ProjectConnectorsAuditWebhookArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAuditWebhookArgs:
    def __init__(__self__, *,
                 base_url: pulumi.Input[str],
                 name: pulumi.Input[str],
                 audit_filters: Optional[pulumi.Input[str]] = None,
                 authentication: Optional[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationArgs']] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 headers: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 hmac_secret: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 insecure: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] base_url: The base URL to fetch
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] audit_filters: Specify which events will be sent to the external audit service (including tenant selection).
        :param pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationArgs'] authentication: Authentication Information
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] headers: The headers to send with the request
        :param pulumi.Input[str] hmac_secret: HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        :param pulumi.Input[bool] insecure: Will ignore certificate errors raised by the client
        """
        pulumi.set(__self__, "base_url", base_url)
        pulumi.set(__self__, "name", name)
        if audit_filters is not None:
            pulumi.set(__self__, "audit_filters", audit_filters)
        if authentication is not None:
            pulumi.set(__self__, "authentication", authentication)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if hmac_secret is not None:
            pulumi.set(__self__, "hmac_secret", hmac_secret)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)

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

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="auditFilters")
    def audit_filters(self) -> Optional[pulumi.Input[str]]:
        """
        Specify which events will be sent to the external audit service (including tenant selection).
        """
        return pulumi.get(self, "audit_filters")

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

    @property
    @pulumi.getter
    def authentication(self) -> Optional[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationArgs']]:
        """
        Authentication Information
        """
        return pulumi.get(self, "authentication")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def headers(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        The headers to send with the request
        """
        return pulumi.get(self, "headers")

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

    @property
    @pulumi.getter(name="hmacSecret")
    def hmac_secret(self) -> Optional[pulumi.Input[str]]:
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        return pulumi.get(self, "hmac_secret")

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

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

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

    @property
    @pulumi.getter
    def insecure(self) -> Optional[pulumi.Input[bool]]:
        """
        Will ignore certificate errors raised by the client
        """
        return pulumi.get(self, "insecure")

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


if not MYPY:
    class ProjectConnectorsAuditWebhookAuthenticationArgsDict(TypedDict):
        api_key: NotRequired[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationApiKeyArgsDict']]
        basic: NotRequired[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationBasicArgsDict']]
        bearer_token: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsAuditWebhookAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAuditWebhookAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: Optional[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationApiKeyArgs']] = None,
                 basic: Optional[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationBasicArgs']] = None,
                 bearer_token: Optional[pulumi.Input[str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if basic is not None:
            pulumi.set(__self__, "basic", basic)
        if bearer_token is not None:
            pulumi.set(__self__, "bearer_token", bearer_token)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> Optional[pulumi.Input['ProjectConnectorsAuditWebhookAuthenticationApiKeyArgs']]:
        return pulumi.get(self, "api_key")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsAuditWebhookAuthenticationApiKeyArgsDict(TypedDict):
        key: pulumi.Input[str]
        token: pulumi.Input[str]
elif False:
    ProjectConnectorsAuditWebhookAuthenticationApiKeyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAuditWebhookAuthenticationApiKeyArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 token: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "token", token)

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

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

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

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


if not MYPY:
    class ProjectConnectorsAuditWebhookAuthenticationBasicArgsDict(TypedDict):
        password: pulumi.Input[str]
        username: pulumi.Input[str]
elif False:
    ProjectConnectorsAuditWebhookAuthenticationBasicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAuditWebhookAuthenticationBasicArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

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

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

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

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


if not MYPY:
    class ProjectConnectorsAwsS3ArgsDict(TypedDict):
        access_key_id: pulumi.Input[str]
        """
        The unique AWS access key ID.
        """
        bucket: pulumi.Input[str]
        """
        The AWS S3 bucket. This bucket should already exist for the connector to work.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        region: pulumi.Input[str]
        """
        The AWS S3 region, e.g. `us-east-1`.
        """
        secret_access_key: pulumi.Input[str]
        """
        The secret AWS access key.
        """
        audit_enabled: NotRequired[pulumi.Input[bool]]
        audit_filters: NotRequired[pulumi.Input[str]]
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        troubleshoot_log_enabled: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectConnectorsAwsS3ArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAwsS3Args:
    def __init__(__self__, *,
                 access_key_id: pulumi.Input[str],
                 bucket: pulumi.Input[str],
                 name: pulumi.Input[str],
                 region: pulumi.Input[str],
                 secret_access_key: pulumi.Input[str],
                 audit_enabled: Optional[pulumi.Input[bool]] = None,
                 audit_filters: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 troubleshoot_log_enabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] access_key_id: The unique AWS access key ID.
        :param pulumi.Input[str] bucket: The AWS S3 bucket. This bucket should already exist for the connector to work.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] region: The AWS S3 region, e.g. `us-east-1`.
        :param pulumi.Input[str] secret_access_key: The secret AWS access key.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "access_key_id", access_key_id)
        pulumi.set(__self__, "bucket", bucket)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "secret_access_key", secret_access_key)
        if audit_enabled is not None:
            pulumi.set(__self__, "audit_enabled", audit_enabled)
        if audit_filters is not None:
            pulumi.set(__self__, "audit_filters", audit_filters)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if troubleshoot_log_enabled is not None:
            pulumi.set(__self__, "troubleshoot_log_enabled", troubleshoot_log_enabled)

    @property
    @pulumi.getter(name="accessKeyId")
    def access_key_id(self) -> pulumi.Input[str]:
        """
        The unique AWS access key ID.
        """
        return pulumi.get(self, "access_key_id")

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

    @property
    @pulumi.getter
    def bucket(self) -> pulumi.Input[str]:
        """
        The AWS S3 bucket. This bucket should already exist for the connector to work.
        """
        return pulumi.get(self, "bucket")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def region(self) -> pulumi.Input[str]:
        """
        The AWS S3 region, e.g. `us-east-1`.
        """
        return pulumi.get(self, "region")

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

    @property
    @pulumi.getter(name="secretAccessKey")
    def secret_access_key(self) -> pulumi.Input[str]:
        """
        The secret AWS access key.
        """
        return pulumi.get(self, "secret_access_key")

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsAwsTranslateArgsDict(TypedDict):
        access_key_id: pulumi.Input[str]
        """
        AWS access key ID.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        region: pulumi.Input[str]
        """
        The AWS region to which this client will send requests. (e.g. us-east-1.)
        """
        secret_access_key: pulumi.Input[str]
        """
        AWS secret access key.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        session_token: NotRequired[pulumi.Input[str]]
        """
        (Optional) A security or session token to use with these credentials. Usually present for temporary credentials.
        """
elif False:
    ProjectConnectorsAwsTranslateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsAwsTranslateArgs:
    def __init__(__self__, *,
                 access_key_id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 region: pulumi.Input[str],
                 secret_access_key: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 session_token: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] access_key_id: AWS access key ID.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] region: The AWS region to which this client will send requests. (e.g. us-east-1.)
        :param pulumi.Input[str] secret_access_key: AWS secret access key.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] session_token: (Optional) A security or session token to use with these credentials. Usually present for temporary credentials.
        """
        pulumi.set(__self__, "access_key_id", access_key_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "secret_access_key", secret_access_key)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if session_token is not None:
            pulumi.set(__self__, "session_token", session_token)

    @property
    @pulumi.getter(name="accessKeyId")
    def access_key_id(self) -> pulumi.Input[str]:
        """
        AWS access key ID.
        """
        return pulumi.get(self, "access_key_id")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def region(self) -> pulumi.Input[str]:
        """
        The AWS region to which this client will send requests. (e.g. us-east-1.)
        """
        return pulumi.get(self, "region")

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

    @property
    @pulumi.getter(name="secretAccessKey")
    def secret_access_key(self) -> pulumi.Input[str]:
        """
        AWS secret access key.
        """
        return pulumi.get(self, "secret_access_key")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="sessionToken")
    def session_token(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) A security or session token to use with these credentials. Usually present for temporary credentials.
        """
        return pulumi.get(self, "session_token")

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


if not MYPY:
    class ProjectConnectorsClearArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        Your CLEAR API key.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        project_id: pulumi.Input[str]
        """
        Your CLEAR project ID.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsClearArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsClearArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 project_id: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: Your CLEAR API key.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] project_id: Your CLEAR project ID.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "project_id", project_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        Your CLEAR API key.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        Your CLEAR project ID.
        """
        return pulumi.get(self, "project_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsDatadogArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        The unique Datadog organization key.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        audit_enabled: NotRequired[pulumi.Input[bool]]
        audit_filters: NotRequired[pulumi.Input[str]]
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        site: NotRequired[pulumi.Input[str]]
        """
        The Datadog site to send logs to. Default is `datadoghq.com`. European, free tier and other customers should set their site accordingly.
        """
        troubleshoot_log_enabled: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectConnectorsDatadogArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsDatadogArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 audit_enabled: Optional[pulumi.Input[bool]] = None,
                 audit_filters: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 troubleshoot_log_enabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] api_key: The unique Datadog organization key.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] site: The Datadog site to send logs to. Default is `datadoghq.com`. European, free tier and other customers should set their site accordingly.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        if audit_enabled is not None:
            pulumi.set(__self__, "audit_enabled", audit_enabled)
        if audit_filters is not None:
            pulumi.set(__self__, "audit_filters", audit_filters)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if troubleshoot_log_enabled is not None:
            pulumi.set(__self__, "troubleshoot_log_enabled", troubleshoot_log_enabled)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        The unique Datadog organization key.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[str]]:
        """
        The Datadog site to send logs to. Default is `datadoghq.com`. European, free tier and other customers should set their site accordingly.
        """
        return pulumi.get(self, "site")

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

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

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


if not MYPY:
    class ProjectConnectorsDevrevGrowArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        Authentication to DevRev APIs requires a personal access token (PAT).
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsDevrevGrowArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsDevrevGrowArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: Authentication to DevRev APIs requires a personal access token (PAT).
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        Authentication to DevRev APIs requires a personal access token (PAT).
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsDoceboArgsDict(TypedDict):
        base_url: pulumi.Input[str]
        """
        The Docebo api base url.
        """
        client_id: pulumi.Input[str]
        """
        The Docebo OAuth 2.0 app client ID.
        """
        client_secret: pulumi.Input[str]
        """
        The Docebo OAuth 2.0 app client secret.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        password: pulumi.Input[str]
        """
        The Docebo user's password.
        """
        username: pulumi.Input[str]
        """
        The Docebo username.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsDoceboArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsDoceboArgs:
    def __init__(__self__, *,
                 base_url: pulumi.Input[str],
                 client_id: pulumi.Input[str],
                 client_secret: pulumi.Input[str],
                 name: pulumi.Input[str],
                 password: pulumi.Input[str],
                 username: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] base_url: The Docebo api base url.
        :param pulumi.Input[str] client_id: The Docebo OAuth 2.0 app client ID.
        :param pulumi.Input[str] client_secret: The Docebo OAuth 2.0 app client secret.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] password: The Docebo user's password.
        :param pulumi.Input[str] username: The Docebo username.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "base_url", base_url)
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret", client_secret)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Input[str]:
        """
        The Docebo OAuth 2.0 app client ID.
        """
        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="clientSecret")
    def client_secret(self) -> pulumi.Input[str]:
        """
        The Docebo OAuth 2.0 app client secret.
        """
        return pulumi.get(self, "client_secret")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        """
        The Docebo user's password.
        """
        return pulumi.get(self, "password")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsFingerprintArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        public_api_key: pulumi.Input[str]
        """
        The Fingerprint public API key.
        """
        secret_api_key: pulumi.Input[str]
        """
        The Fingerprint secret API key.
        """
        cloudflare_endpoint_url: NotRequired[pulumi.Input[str]]
        """
        The Cloudflare integration Endpoint URL.
        """
        cloudflare_script_url: NotRequired[pulumi.Input[str]]
        """
        The Cloudflare integration Script URL.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        use_cloudflare_integration: NotRequired[pulumi.Input[bool]]
        """
        Enable to configure the relevant Cloudflare integration parameters if Cloudflare integration is set in your Fingerprint account.
        """
elif False:
    ProjectConnectorsFingerprintArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsFingerprintArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 public_api_key: pulumi.Input[str],
                 secret_api_key: pulumi.Input[str],
                 cloudflare_endpoint_url: Optional[pulumi.Input[str]] = None,
                 cloudflare_script_url: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 use_cloudflare_integration: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] public_api_key: The Fingerprint public API key.
        :param pulumi.Input[str] secret_api_key: The Fingerprint secret API key.
        :param pulumi.Input[str] cloudflare_endpoint_url: The Cloudflare integration Endpoint URL.
        :param pulumi.Input[str] cloudflare_script_url: The Cloudflare integration Script URL.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[bool] use_cloudflare_integration: Enable to configure the relevant Cloudflare integration parameters if Cloudflare integration is set in your Fingerprint account.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "public_api_key", public_api_key)
        pulumi.set(__self__, "secret_api_key", secret_api_key)
        if cloudflare_endpoint_url is not None:
            pulumi.set(__self__, "cloudflare_endpoint_url", cloudflare_endpoint_url)
        if cloudflare_script_url is not None:
            pulumi.set(__self__, "cloudflare_script_url", cloudflare_script_url)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if use_cloudflare_integration is not None:
            pulumi.set(__self__, "use_cloudflare_integration", use_cloudflare_integration)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="publicApiKey")
    def public_api_key(self) -> pulumi.Input[str]:
        """
        The Fingerprint public API key.
        """
        return pulumi.get(self, "public_api_key")

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

    @property
    @pulumi.getter(name="secretApiKey")
    def secret_api_key(self) -> pulumi.Input[str]:
        """
        The Fingerprint secret API key.
        """
        return pulumi.get(self, "secret_api_key")

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

    @property
    @pulumi.getter(name="cloudflareEndpointUrl")
    def cloudflare_endpoint_url(self) -> Optional[pulumi.Input[str]]:
        """
        The Cloudflare integration Endpoint URL.
        """
        return pulumi.get(self, "cloudflare_endpoint_url")

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

    @property
    @pulumi.getter(name="cloudflareScriptUrl")
    def cloudflare_script_url(self) -> Optional[pulumi.Input[str]]:
        """
        The Cloudflare integration Script URL.
        """
        return pulumi.get(self, "cloudflare_script_url")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="useCloudflareIntegration")
    def use_cloudflare_integration(self) -> Optional[pulumi.Input[bool]]:
        """
        Enable to configure the relevant Cloudflare integration parameters if Cloudflare integration is set in your Fingerprint account.
        """
        return pulumi.get(self, "use_cloudflare_integration")

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


if not MYPY:
    class ProjectConnectorsFingerprintDescopeArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        custom_domain: NotRequired[pulumi.Input[str]]
        """
        The custom domain to fetch
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsFingerprintDescopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsFingerprintDescopeArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 custom_domain: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] custom_domain: The custom domain to fetch
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "name", name)
        if custom_domain is not None:
            pulumi.set(__self__, "custom_domain", custom_domain)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="customDomain")
    def custom_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The custom domain to fetch
        """
        return pulumi.get(self, "custom_domain")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsForterArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        secret_key: pulumi.Input[str]
        """
        The Forter secret key.
        """
        site_id: pulumi.Input[str]
        """
        The Forter site ID.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        override_ip_address: NotRequired[pulumi.Input[str]]
        """
        Override the user IP address.
        """
        override_user_email: NotRequired[pulumi.Input[str]]
        """
        Override the user email.
        """
        overrides: NotRequired[pulumi.Input[bool]]
        """
        Override the user's IP address or email so that Forter can provide a specific decision or recommendation. Contact the Forter team for further details. Note: Overriding the user IP address or email is intended for testing purpose and should not be utilized in production environments.
        """
elif False:
    ProjectConnectorsForterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsForterArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 secret_key: pulumi.Input[str],
                 site_id: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 override_ip_address: Optional[pulumi.Input[str]] = None,
                 override_user_email: Optional[pulumi.Input[str]] = None,
                 overrides: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] secret_key: The Forter secret key.
        :param pulumi.Input[str] site_id: The Forter site ID.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] override_ip_address: Override the user IP address.
        :param pulumi.Input[str] override_user_email: Override the user email.
        :param pulumi.Input[bool] overrides: Override the user's IP address or email so that Forter can provide a specific decision or recommendation. Contact the Forter team for further details. Note: Overriding the user IP address or email is intended for testing purpose and should not be utilized in production environments.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "secret_key", secret_key)
        pulumi.set(__self__, "site_id", site_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if override_ip_address is not None:
            pulumi.set(__self__, "override_ip_address", override_ip_address)
        if override_user_email is not None:
            pulumi.set(__self__, "override_user_email", override_user_email)
        if overrides is not None:
            pulumi.set(__self__, "overrides", overrides)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="secretKey")
    def secret_key(self) -> pulumi.Input[str]:
        """
        The Forter secret key.
        """
        return pulumi.get(self, "secret_key")

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

    @property
    @pulumi.getter(name="siteId")
    def site_id(self) -> pulumi.Input[str]:
        """
        The Forter site ID.
        """
        return pulumi.get(self, "site_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="overrideIpAddress")
    def override_ip_address(self) -> Optional[pulumi.Input[str]]:
        """
        Override the user IP address.
        """
        return pulumi.get(self, "override_ip_address")

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

    @property
    @pulumi.getter(name="overrideUserEmail")
    def override_user_email(self) -> Optional[pulumi.Input[str]]:
        """
        Override the user email.
        """
        return pulumi.get(self, "override_user_email")

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

    @property
    @pulumi.getter
    def overrides(self) -> Optional[pulumi.Input[bool]]:
        """
        Override the user's IP address or email so that Forter can provide a specific decision or recommendation. Contact the Forter team for further details. Note: Overriding the user IP address or email is intended for testing purpose and should not be utilized in production environments.
        """
        return pulumi.get(self, "overrides")

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


if not MYPY:
    class ProjectConnectorsGoogleCloudTranslationArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        project_id: pulumi.Input[str]
        """
        The Google Cloud project ID where the Google Cloud Translation is managed.
        """
        service_account_json: pulumi.Input[str]
        """
        Service Account JSON associated with the current project.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsGoogleCloudTranslationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsGoogleCloudTranslationArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 project_id: pulumi.Input[str],
                 service_account_json: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] project_id: The Google Cloud project ID where the Google Cloud Translation is managed.
        :param pulumi.Input[str] service_account_json: Service Account JSON associated with the current project.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "project_id", project_id)
        pulumi.set(__self__, "service_account_json", service_account_json)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        The Google Cloud project ID where the Google Cloud Translation is managed.
        """
        return pulumi.get(self, "project_id")

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

    @property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> pulumi.Input[str]:
        """
        Service Account JSON associated with the current project.
        """
        return pulumi.get(self, "service_account_json")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsHibpArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsHibpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHibpArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsHttpArgsDict(TypedDict):
        base_url: pulumi.Input[str]
        """
        The base URL to fetch
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        authentication: NotRequired[pulumi.Input['ProjectConnectorsHttpAuthenticationArgsDict']]
        """
        Authentication Information
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        headers: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        """
        The headers to send with the request
        """
        hmac_secret: NotRequired[pulumi.Input[str]]
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        id: NotRequired[pulumi.Input[str]]
        include_headers_in_context: NotRequired[pulumi.Input[bool]]
        """
        The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        """
        insecure: NotRequired[pulumi.Input[bool]]
        """
        Will ignore certificate errors raised by the client
        """
elif False:
    ProjectConnectorsHttpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpArgs:
    def __init__(__self__, *,
                 base_url: pulumi.Input[str],
                 name: pulumi.Input[str],
                 authentication: Optional[pulumi.Input['ProjectConnectorsHttpAuthenticationArgs']] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 headers: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 hmac_secret: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 include_headers_in_context: Optional[pulumi.Input[bool]] = None,
                 insecure: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] base_url: The base URL to fetch
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input['ProjectConnectorsHttpAuthenticationArgs'] authentication: Authentication Information
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] headers: The headers to send with the request
        :param pulumi.Input[str] hmac_secret: HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        :param pulumi.Input[bool] include_headers_in_context: The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        :param pulumi.Input[bool] insecure: Will ignore certificate errors raised by the client
        """
        pulumi.set(__self__, "base_url", base_url)
        pulumi.set(__self__, "name", name)
        if authentication is not None:
            pulumi.set(__self__, "authentication", authentication)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if hmac_secret is not None:
            pulumi.set(__self__, "hmac_secret", hmac_secret)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if include_headers_in_context is not None:
            pulumi.set(__self__, "include_headers_in_context", include_headers_in_context)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)

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

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def authentication(self) -> Optional[pulumi.Input['ProjectConnectorsHttpAuthenticationArgs']]:
        """
        Authentication Information
        """
        return pulumi.get(self, "authentication")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def headers(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        The headers to send with the request
        """
        return pulumi.get(self, "headers")

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

    @property
    @pulumi.getter(name="hmacSecret")
    def hmac_secret(self) -> Optional[pulumi.Input[str]]:
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        return pulumi.get(self, "hmac_secret")

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

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

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

    @property
    @pulumi.getter(name="includeHeadersInContext")
    def include_headers_in_context(self) -> Optional[pulumi.Input[bool]]:
        """
        The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        """
        return pulumi.get(self, "include_headers_in_context")

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

    @property
    @pulumi.getter
    def insecure(self) -> Optional[pulumi.Input[bool]]:
        """
        Will ignore certificate errors raised by the client
        """
        return pulumi.get(self, "insecure")

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


if not MYPY:
    class ProjectConnectorsHttpAuthenticationArgsDict(TypedDict):
        api_key: NotRequired[pulumi.Input['ProjectConnectorsHttpAuthenticationApiKeyArgsDict']]
        basic: NotRequired[pulumi.Input['ProjectConnectorsHttpAuthenticationBasicArgsDict']]
        bearer_token: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsHttpAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: Optional[pulumi.Input['ProjectConnectorsHttpAuthenticationApiKeyArgs']] = None,
                 basic: Optional[pulumi.Input['ProjectConnectorsHttpAuthenticationBasicArgs']] = None,
                 bearer_token: Optional[pulumi.Input[str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if basic is not None:
            pulumi.set(__self__, "basic", basic)
        if bearer_token is not None:
            pulumi.set(__self__, "bearer_token", bearer_token)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> Optional[pulumi.Input['ProjectConnectorsHttpAuthenticationApiKeyArgs']]:
        return pulumi.get(self, "api_key")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsHttpAuthenticationApiKeyArgsDict(TypedDict):
        key: pulumi.Input[str]
        token: pulumi.Input[str]
elif False:
    ProjectConnectorsHttpAuthenticationApiKeyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpAuthenticationApiKeyArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 token: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "token", token)

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

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

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

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


if not MYPY:
    class ProjectConnectorsHttpAuthenticationBasicArgsDict(TypedDict):
        password: pulumi.Input[str]
        username: pulumi.Input[str]
elif False:
    ProjectConnectorsHttpAuthenticationBasicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpAuthenticationBasicArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

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

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

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

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


if not MYPY:
    class ProjectConnectorsHttpStaticIpArgsDict(TypedDict):
        base_url: pulumi.Input[str]
        """
        The base URL to fetch
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        authentication: NotRequired[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationArgsDict']]
        """
        Authentication Information
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        headers: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        """
        The headers to send with the request
        """
        hmac_secret: NotRequired[pulumi.Input[str]]
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        id: NotRequired[pulumi.Input[str]]
        include_headers_in_context: NotRequired[pulumi.Input[bool]]
        """
        The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        """
        insecure: NotRequired[pulumi.Input[bool]]
        """
        Will ignore certificate errors raised by the client
        """
elif False:
    ProjectConnectorsHttpStaticIpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpStaticIpArgs:
    def __init__(__self__, *,
                 base_url: pulumi.Input[str],
                 name: pulumi.Input[str],
                 authentication: Optional[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationArgs']] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 headers: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 hmac_secret: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 include_headers_in_context: Optional[pulumi.Input[bool]] = None,
                 insecure: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] base_url: The base URL to fetch
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationArgs'] authentication: Authentication Information
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] headers: The headers to send with the request
        :param pulumi.Input[str] hmac_secret: HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        :param pulumi.Input[bool] include_headers_in_context: The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        :param pulumi.Input[bool] insecure: Will ignore certificate errors raised by the client
        """
        pulumi.set(__self__, "base_url", base_url)
        pulumi.set(__self__, "name", name)
        if authentication is not None:
            pulumi.set(__self__, "authentication", authentication)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if hmac_secret is not None:
            pulumi.set(__self__, "hmac_secret", hmac_secret)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if include_headers_in_context is not None:
            pulumi.set(__self__, "include_headers_in_context", include_headers_in_context)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)

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

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def authentication(self) -> Optional[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationArgs']]:
        """
        Authentication Information
        """
        return pulumi.get(self, "authentication")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def headers(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        The headers to send with the request
        """
        return pulumi.get(self, "headers")

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

    @property
    @pulumi.getter(name="hmacSecret")
    def hmac_secret(self) -> Optional[pulumi.Input[str]]:
        """
        HMAC is a method for message signing with a symmetrical key. This secret will be used to sign the base64 encoded payload, and the resulting signature will be sent in the `x-descope-webhook-s256` header. The receiving service should use this secret to verify the integrity and authenticity of the payload by checking the provided signature
        """
        return pulumi.get(self, "hmac_secret")

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

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

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

    @property
    @pulumi.getter(name="includeHeadersInContext")
    def include_headers_in_context(self) -> Optional[pulumi.Input[bool]]:
        """
        The connector response context will also include the headers. The context will have a "body" attribute and a "headers" attribute. See more details in the help guide
        """
        return pulumi.get(self, "include_headers_in_context")

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

    @property
    @pulumi.getter
    def insecure(self) -> Optional[pulumi.Input[bool]]:
        """
        Will ignore certificate errors raised by the client
        """
        return pulumi.get(self, "insecure")

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


if not MYPY:
    class ProjectConnectorsHttpStaticIpAuthenticationArgsDict(TypedDict):
        api_key: NotRequired[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgsDict']]
        basic: NotRequired[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationBasicArgsDict']]
        bearer_token: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsHttpStaticIpAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpStaticIpAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: Optional[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgs']] = None,
                 basic: Optional[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationBasicArgs']] = None,
                 bearer_token: Optional[pulumi.Input[str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if basic is not None:
            pulumi.set(__self__, "basic", basic)
        if bearer_token is not None:
            pulumi.set(__self__, "bearer_token", bearer_token)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> Optional[pulumi.Input['ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgs']]:
        return pulumi.get(self, "api_key")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgsDict(TypedDict):
        key: pulumi.Input[str]
        token: pulumi.Input[str]
elif False:
    ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpStaticIpAuthenticationApiKeyArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 token: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "token", token)

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

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

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

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


if not MYPY:
    class ProjectConnectorsHttpStaticIpAuthenticationBasicArgsDict(TypedDict):
        password: pulumi.Input[str]
        username: pulumi.Input[str]
elif False:
    ProjectConnectorsHttpStaticIpAuthenticationBasicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHttpStaticIpAuthenticationBasicArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

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

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

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

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


if not MYPY:
    class ProjectConnectorsHubspotArgsDict(TypedDict):
        access_token: pulumi.Input[str]
        """
        The HubSpot private API access token generated for the Descope service.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        base_url: NotRequired[pulumi.Input[str]]
        """
        The base URL of the HubSpot API, when using a custom domain in HubSpot, default value is https://api.hubapi.com .
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsHubspotArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsHubspotArgs:
    def __init__(__self__, *,
                 access_token: pulumi.Input[str],
                 name: pulumi.Input[str],
                 base_url: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] access_token: The HubSpot private API access token generated for the Descope service.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] base_url: The base URL of the HubSpot API, when using a custom domain in HubSpot, default value is https://api.hubapi.com .
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "access_token", access_token)
        pulumi.set(__self__, "name", name)
        if base_url is not None:
            pulumi.set(__self__, "base_url", base_url)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="accessToken")
    def access_token(self) -> pulumi.Input[str]:
        """
        The HubSpot private API access token generated for the Descope service.
        """
        return pulumi.get(self, "access_token")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="baseUrl")
    def base_url(self) -> Optional[pulumi.Input[str]]:
        """
        The base URL of the HubSpot API, when using a custom domain in HubSpot, default value is https://api.hubapi.com .
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsIntercomArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        token: pulumi.Input[str]
        """
        The Intercom access token.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        region: NotRequired[pulumi.Input[str]]
        """
        Regional Hosting - US, EU, or AU. default: US
        """
elif False:
    ProjectConnectorsIntercomArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsIntercomArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 token: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] token: The Intercom access token.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] region: Regional Hosting - US, EU, or AU. default: US
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "token", token)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def token(self) -> pulumi.Input[str]:
        """
        The Intercom access token.
        """
        return pulumi.get(self, "token")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        Regional Hosting - US, EU, or AU. default: US
        """
        return pulumi.get(self, "region")

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


if not MYPY:
    class ProjectConnectorsNewrelicArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        Ingest License Key of the account you want to report data to.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        audit_enabled: NotRequired[pulumi.Input[bool]]
        audit_filters: NotRequired[pulumi.Input[str]]
        data_center: NotRequired[pulumi.Input[str]]
        """
        The New Relic data center the account belongs to. Possible values are: `US`, `EU`, `FedRAMP`. Default is `US`.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        logs_prefix: NotRequired[pulumi.Input[str]]
        """
        Specify a custom prefix for all log fields. The default prefix is `descope.`.
        """
        override_logs_prefix: NotRequired[pulumi.Input[bool]]
        """
        Enable this option to use a custom prefix for log fields.
        """
        troubleshoot_log_enabled: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectConnectorsNewrelicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsNewrelicArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 audit_enabled: Optional[pulumi.Input[bool]] = None,
                 audit_filters: Optional[pulumi.Input[str]] = None,
                 data_center: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 logs_prefix: Optional[pulumi.Input[str]] = None,
                 override_logs_prefix: Optional[pulumi.Input[bool]] = None,
                 troubleshoot_log_enabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] api_key: Ingest License Key of the account you want to report data to.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] data_center: The New Relic data center the account belongs to. Possible values are: `US`, `EU`, `FedRAMP`. Default is `US`.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] logs_prefix: Specify a custom prefix for all log fields. The default prefix is `descope.`.
        :param pulumi.Input[bool] override_logs_prefix: Enable this option to use a custom prefix for log fields.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        if audit_enabled is not None:
            pulumi.set(__self__, "audit_enabled", audit_enabled)
        if audit_filters is not None:
            pulumi.set(__self__, "audit_filters", audit_filters)
        if data_center is not None:
            pulumi.set(__self__, "data_center", data_center)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if logs_prefix is not None:
            pulumi.set(__self__, "logs_prefix", logs_prefix)
        if override_logs_prefix is not None:
            pulumi.set(__self__, "override_logs_prefix", override_logs_prefix)
        if troubleshoot_log_enabled is not None:
            pulumi.set(__self__, "troubleshoot_log_enabled", troubleshoot_log_enabled)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        Ingest License Key of the account you want to report data to.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

    @property
    @pulumi.getter(name="dataCenter")
    def data_center(self) -> Optional[pulumi.Input[str]]:
        """
        The New Relic data center the account belongs to. Possible values are: `US`, `EU`, `FedRAMP`. Default is `US`.
        """
        return pulumi.get(self, "data_center")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="logsPrefix")
    def logs_prefix(self) -> Optional[pulumi.Input[str]]:
        """
        Specify a custom prefix for all log fields. The default prefix is `descope.`.
        """
        return pulumi.get(self, "logs_prefix")

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

    @property
    @pulumi.getter(name="overrideLogsPrefix")
    def override_logs_prefix(self) -> Optional[pulumi.Input[bool]]:
        """
        Enable this option to use a custom prefix for log fields.
        """
        return pulumi.get(self, "override_logs_prefix")

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

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

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


if not MYPY:
    class ProjectConnectorsRecaptchaArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        secret_key: pulumi.Input[str]
        """
        The secret key authorizes communication between Descope backend and the reCAPTCHA server to verify the user's response.
        """
        site_key: pulumi.Input[str]
        """
        The site key is used to invoke reCAPTCHA service on your site or mobile application.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsRecaptchaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsRecaptchaArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 secret_key: pulumi.Input[str],
                 site_key: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] secret_key: The secret key authorizes communication between Descope backend and the reCAPTCHA server to verify the user's response.
        :param pulumi.Input[str] site_key: The site key is used to invoke reCAPTCHA service on your site or mobile application.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "secret_key", secret_key)
        pulumi.set(__self__, "site_key", site_key)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="secretKey")
    def secret_key(self) -> pulumi.Input[str]:
        """
        The secret key authorizes communication between Descope backend and the reCAPTCHA server to verify the user's response.
        """
        return pulumi.get(self, "secret_key")

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

    @property
    @pulumi.getter(name="siteKey")
    def site_key(self) -> pulumi.Input[str]:
        """
        The site key is used to invoke reCAPTCHA service on your site or mobile application.
        """
        return pulumi.get(self, "site_key")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsRecaptchaEnterpriseArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        API key associated with the current project.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        project_id: pulumi.Input[str]
        """
        The Google Cloud project ID where the reCAPTCHA Enterprise is managed.
        """
        site_key: pulumi.Input[str]
        """
        The site key is used to invoke reCAPTCHA Enterprise service on your site or mobile application.
        """
        assessment_score: NotRequired[pulumi.Input[float]]
        """
        When configured, the Recaptcha action will return the score without assessing the request. The score ranges between 0 and 1, where 1 is a human interaction and 0 is a bot.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        override_assessment: NotRequired[pulumi.Input[bool]]
        """
        Override the default assessment model. Note: Overriding assessment is intended for automated testing and should not be utilized in production environments.
        """
elif False:
    ProjectConnectorsRecaptchaEnterpriseArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsRecaptchaEnterpriseArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 project_id: pulumi.Input[str],
                 site_key: pulumi.Input[str],
                 assessment_score: Optional[pulumi.Input[float]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 override_assessment: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] api_key: API key associated with the current project.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] project_id: The Google Cloud project ID where the reCAPTCHA Enterprise is managed.
        :param pulumi.Input[str] site_key: The site key is used to invoke reCAPTCHA Enterprise service on your site or mobile application.
        :param pulumi.Input[float] assessment_score: When configured, the Recaptcha action will return the score without assessing the request. The score ranges between 0 and 1, where 1 is a human interaction and 0 is a bot.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[bool] override_assessment: Override the default assessment model. Note: Overriding assessment is intended for automated testing and should not be utilized in production environments.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "project_id", project_id)
        pulumi.set(__self__, "site_key", site_key)
        if assessment_score is not None:
            pulumi.set(__self__, "assessment_score", assessment_score)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if override_assessment is not None:
            pulumi.set(__self__, "override_assessment", override_assessment)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        API key associated with the current project.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        The Google Cloud project ID where the reCAPTCHA Enterprise is managed.
        """
        return pulumi.get(self, "project_id")

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

    @property
    @pulumi.getter(name="siteKey")
    def site_key(self) -> pulumi.Input[str]:
        """
        The site key is used to invoke reCAPTCHA Enterprise service on your site or mobile application.
        """
        return pulumi.get(self, "site_key")

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

    @property
    @pulumi.getter(name="assessmentScore")
    def assessment_score(self) -> Optional[pulumi.Input[float]]:
        """
        When configured, the Recaptcha action will return the score without assessing the request. The score ranges between 0 and 1, where 1 is a human interaction and 0 is a bot.
        """
        return pulumi.get(self, "assessment_score")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="overrideAssessment")
    def override_assessment(self) -> Optional[pulumi.Input[bool]]:
        """
        Override the default assessment model. Note: Overriding assessment is intended for automated testing and should not be utilized in production environments.
        """
        return pulumi.get(self, "override_assessment")

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


if not MYPY:
    class ProjectConnectorsRekognitionArgsDict(TypedDict):
        access_key_id: pulumi.Input[str]
        """
        The AWS access key ID
        """
        collection_id: pulumi.Input[str]
        """
        The collection to store registered users in. Should match `[a-zA-Z0-9_.-]+` pattern. Changing this will cause losing existing users.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        secret_access_key: pulumi.Input[str]
        """
        The AWS secret access key
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsRekognitionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsRekognitionArgs:
    def __init__(__self__, *,
                 access_key_id: pulumi.Input[str],
                 collection_id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 secret_access_key: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] access_key_id: The AWS access key ID
        :param pulumi.Input[str] collection_id: The collection to store registered users in. Should match `[a-zA-Z0-9_.-]+` pattern. Changing this will cause losing existing users.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] secret_access_key: The AWS secret access key
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "access_key_id", access_key_id)
        pulumi.set(__self__, "collection_id", collection_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "secret_access_key", secret_access_key)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="accessKeyId")
    def access_key_id(self) -> pulumi.Input[str]:
        """
        The AWS access key ID
        """
        return pulumi.get(self, "access_key_id")

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

    @property
    @pulumi.getter(name="collectionId")
    def collection_id(self) -> pulumi.Input[str]:
        """
        The collection to store registered users in. Should match `[a-zA-Z0-9_.-]+` pattern. Changing this will cause losing existing users.
        """
        return pulumi.get(self, "collection_id")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="secretAccessKey")
    def secret_access_key(self) -> pulumi.Input[str]:
        """
        The AWS secret access key
        """
        return pulumi.get(self, "secret_access_key")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsSalesforceArgsDict(TypedDict):
        base_url: pulumi.Input[str]
        """
        The Salesforce API base URL.
        """
        client_id: pulumi.Input[str]
        """
        The consumer key of the connected app.
        """
        client_secret: pulumi.Input[str]
        """
        The consumer secret of the connected app.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        version: pulumi.Input[str]
        """
        REST API Version.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSalesforceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSalesforceArgs:
    def __init__(__self__, *,
                 base_url: pulumi.Input[str],
                 client_id: pulumi.Input[str],
                 client_secret: pulumi.Input[str],
                 name: pulumi.Input[str],
                 version: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] base_url: The Salesforce API base URL.
        :param pulumi.Input[str] client_id: The consumer key of the connected app.
        :param pulumi.Input[str] client_secret: The consumer secret of the connected app.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] version: REST API Version.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "base_url", base_url)
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret", client_secret)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "version", version)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Input[str]:
        """
        The consumer key of the connected app.
        """
        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="clientSecret")
    def client_secret(self) -> pulumi.Input[str]:
        """
        The consumer secret of the connected app.
        """
        return pulumi.get(self, "client_secret")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def version(self) -> pulumi.Input[str]:
        """
        REST API Version.
        """
        return pulumi.get(self, "version")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsSegmentArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        write_key: pulumi.Input[str]
        """
        The Segment Write Key generated for the Descope service.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        host: NotRequired[pulumi.Input[str]]
        """
        The base URL of the Segment API, when using a custom domain in Segment.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSegmentArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSegmentArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 write_key: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 host: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] write_key: The Segment Write Key generated for the Descope service.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[str] host: The base URL of the Segment API, when using a custom domain in Segment.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "write_key", write_key)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="writeKey")
    def write_key(self) -> pulumi.Input[str]:
        """
        The Segment Write Key generated for the Descope service.
        """
        return pulumi.get(self, "write_key")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def host(self) -> Optional[pulumi.Input[str]]:
        """
        The base URL of the Segment API, when using a custom domain in Segment.
        """
        return pulumi.get(self, "host")

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

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

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


if not MYPY:
    class ProjectConnectorsSendgridArgsDict(TypedDict):
        authentication: pulumi.Input['ProjectConnectorsSendgridAuthenticationArgsDict']
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        sender: pulumi.Input['ProjectConnectorsSendgridSenderArgsDict']
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSendgridArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSendgridArgs:
    def __init__(__self__, *,
                 authentication: pulumi.Input['ProjectConnectorsSendgridAuthenticationArgs'],
                 name: pulumi.Input[str],
                 sender: pulumi.Input['ProjectConnectorsSendgridSenderArgs'],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "sender", sender)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

    @authentication.setter
    def authentication(self, value: pulumi.Input['ProjectConnectorsSendgridAuthenticationArgs']):
        pulumi.set(self, "authentication", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

    @sender.setter
    def sender(self, value: pulumi.Input['ProjectConnectorsSendgridSenderArgs']):
        pulumi.set(self, "sender", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsSendgridAuthenticationArgsDict(TypedDict):
        api_key: pulumi.Input[str]
elif False:
    ProjectConnectorsSendgridAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSendgridAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str]):
        pulumi.set(__self__, "api_key", api_key)

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

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


if not MYPY:
    class ProjectConnectorsSendgridSenderArgsDict(TypedDict):
        email: pulumi.Input[str]
        name: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSendgridSenderArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSendgridSenderArgs:
    def __init__(__self__, *,
                 email: pulumi.Input[str],
                 name: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

    @email.setter
    def email(self, value: pulumi.Input[str]):
        pulumi.set(self, "email", 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)


if not MYPY:
    class ProjectConnectorsSmtpArgsDict(TypedDict):
        authentication: pulumi.Input['ProjectConnectorsSmtpAuthenticationArgsDict']
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        sender: pulumi.Input['ProjectConnectorsSmtpSenderArgsDict']
        server: pulumi.Input['ProjectConnectorsSmtpServerArgsDict']
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSmtpArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSmtpArgs:
    def __init__(__self__, *,
                 authentication: pulumi.Input['ProjectConnectorsSmtpAuthenticationArgs'],
                 name: pulumi.Input[str],
                 sender: pulumi.Input['ProjectConnectorsSmtpSenderArgs'],
                 server: pulumi.Input['ProjectConnectorsSmtpServerArgs'],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "sender", sender)
        pulumi.set(__self__, "server", server)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

    @authentication.setter
    def authentication(self, value: pulumi.Input['ProjectConnectorsSmtpAuthenticationArgs']):
        pulumi.set(self, "authentication", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

    @sender.setter
    def sender(self, value: pulumi.Input['ProjectConnectorsSmtpSenderArgs']):
        pulumi.set(self, "sender", value)

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

    @server.setter
    def server(self, value: pulumi.Input['ProjectConnectorsSmtpServerArgs']):
        pulumi.set(self, "server", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsSmtpAuthenticationArgsDict(TypedDict):
        password: pulumi.Input[str]
        username: pulumi.Input[str]
        method: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSmtpAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSmtpAuthenticationArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str],
                 method: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if method is not None:
            pulumi.set(__self__, "method", method)

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

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsSmtpSenderArgsDict(TypedDict):
        email: pulumi.Input[str]
        name: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsSmtpSenderArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSmtpSenderArgs:
    def __init__(__self__, *,
                 email: pulumi.Input[str],
                 name: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

    @email.setter
    def email(self, value: pulumi.Input[str]):
        pulumi.set(self, "email", 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)


if not MYPY:
    class ProjectConnectorsSmtpServerArgsDict(TypedDict):
        host: pulumi.Input[str]
        port: NotRequired[pulumi.Input[int]]
elif False:
    ProjectConnectorsSmtpServerArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSmtpServerArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[str],
                 port: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "host", host)
        if port is not None:
            pulumi.set(__self__, "port", port)

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

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

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

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


if not MYPY:
    class ProjectConnectorsSumologicArgsDict(TypedDict):
        http_source_url: pulumi.Input[str]
        """
        The URL associated with an HTTP Hosted collector
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        audit_enabled: NotRequired[pulumi.Input[bool]]
        audit_filters: NotRequired[pulumi.Input[str]]
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        troubleshoot_log_enabled: NotRequired[pulumi.Input[bool]]
elif False:
    ProjectConnectorsSumologicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsSumologicArgs:
    def __init__(__self__, *,
                 http_source_url: pulumi.Input[str],
                 name: pulumi.Input[str],
                 audit_enabled: Optional[pulumi.Input[bool]] = None,
                 audit_filters: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 troubleshoot_log_enabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] http_source_url: The URL associated with an HTTP Hosted collector
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "http_source_url", http_source_url)
        pulumi.set(__self__, "name", name)
        if audit_enabled is not None:
            pulumi.set(__self__, "audit_enabled", audit_enabled)
        if audit_filters is not None:
            pulumi.set(__self__, "audit_filters", audit_filters)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if troubleshoot_log_enabled is not None:
            pulumi.set(__self__, "troubleshoot_log_enabled", troubleshoot_log_enabled)

    @property
    @pulumi.getter(name="httpSourceUrl")
    def http_source_url(self) -> pulumi.Input[str]:
        """
        The URL associated with an HTTP Hosted collector
        """
        return pulumi.get(self, "http_source_url")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsTelesignArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        The unique Telesign API key
        """
        customer_id: pulumi.Input[str]
        """
        The unique Telesign account Customer ID
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTelesignArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTelesignArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 customer_id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: The unique Telesign API key
        :param pulumi.Input[str] customer_id: The unique Telesign account Customer ID
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "customer_id", customer_id)
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        The unique Telesign API key
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter(name="customerId")
    def customer_id(self) -> pulumi.Input[str]:
        """
        The unique Telesign account Customer ID
        """
        return pulumi.get(self, "customer_id")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsTraceableArgsDict(TypedDict):
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        secret_key: pulumi.Input[str]
        """
        The Traceable secret key.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        eu_region: NotRequired[pulumi.Input[bool]]
        """
        EU(Europe) Region deployment of Traceable platform.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTraceableArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTraceableArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 secret_key: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 eu_region: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] secret_key: The Traceable secret key.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        :param pulumi.Input[bool] eu_region: EU(Europe) Region deployment of Traceable platform.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "secret_key", secret_key)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if eu_region is not None:
            pulumi.set(__self__, "eu_region", eu_region)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="secretKey")
    def secret_key(self) -> pulumi.Input[str]:
        """
        The Traceable secret key.
        """
        return pulumi.get(self, "secret_key")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter(name="euRegion")
    def eu_region(self) -> Optional[pulumi.Input[bool]]:
        """
        EU(Europe) Region deployment of Traceable platform.
        """
        return pulumi.get(self, "eu_region")

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

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

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


if not MYPY:
    class ProjectConnectorsTwilioCoreArgsDict(TypedDict):
        account_sid: pulumi.Input[str]
        authentication: pulumi.Input['ProjectConnectorsTwilioCoreAuthenticationArgsDict']
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        senders: pulumi.Input['ProjectConnectorsTwilioCoreSendersArgsDict']
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTwilioCoreArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioCoreArgs:
    def __init__(__self__, *,
                 account_sid: pulumi.Input[str],
                 authentication: pulumi.Input['ProjectConnectorsTwilioCoreAuthenticationArgs'],
                 name: pulumi.Input[str],
                 senders: pulumi.Input['ProjectConnectorsTwilioCoreSendersArgs'],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "account_sid", account_sid)
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "senders", senders)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

    @authentication.setter
    def authentication(self, value: pulumi.Input['ProjectConnectorsTwilioCoreAuthenticationArgs']):
        pulumi.set(self, "authentication", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

    @senders.setter
    def senders(self, value: pulumi.Input['ProjectConnectorsTwilioCoreSendersArgs']):
        pulumi.set(self, "senders", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectConnectorsTwilioCoreAuthenticationArgsDict(TypedDict):
        api_key: NotRequired[pulumi.Input[str]]
        api_secret: NotRequired[pulumi.Input[str]]
        auth_token: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTwilioCoreAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioCoreAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: Optional[pulumi.Input[str]] = None,
                 api_secret: Optional[pulumi.Input[str]] = None,
                 auth_token: Optional[pulumi.Input[str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if api_secret is not None:
            pulumi.set(__self__, "api_secret", api_secret)
        if auth_token is not None:
            pulumi.set(__self__, "auth_token", auth_token)

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

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsTwilioCoreSendersArgsDict(TypedDict):
        sms: pulumi.Input['ProjectConnectorsTwilioCoreSendersSmsArgsDict']
        voice: NotRequired[pulumi.Input['ProjectConnectorsTwilioCoreSendersVoiceArgsDict']]
elif False:
    ProjectConnectorsTwilioCoreSendersArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioCoreSendersArgs:
    def __init__(__self__, *,
                 sms: pulumi.Input['ProjectConnectorsTwilioCoreSendersSmsArgs'],
                 voice: Optional[pulumi.Input['ProjectConnectorsTwilioCoreSendersVoiceArgs']] = None):
        pulumi.set(__self__, "sms", sms)
        if voice is not None:
            pulumi.set(__self__, "voice", voice)

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

    @sms.setter
    def sms(self, value: pulumi.Input['ProjectConnectorsTwilioCoreSendersSmsArgs']):
        pulumi.set(self, "sms", value)

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

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


if not MYPY:
    class ProjectConnectorsTwilioCoreSendersSmsArgsDict(TypedDict):
        messaging_service_sid: NotRequired[pulumi.Input[str]]
        phone_number: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTwilioCoreSendersSmsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioCoreSendersSmsArgs:
    def __init__(__self__, *,
                 messaging_service_sid: Optional[pulumi.Input[str]] = None,
                 phone_number: Optional[pulumi.Input[str]] = None):
        if messaging_service_sid is not None:
            pulumi.set(__self__, "messaging_service_sid", messaging_service_sid)
        if phone_number is not None:
            pulumi.set(__self__, "phone_number", phone_number)

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

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

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

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


if not MYPY:
    class ProjectConnectorsTwilioCoreSendersVoiceArgsDict(TypedDict):
        phone_number: pulumi.Input[str]
elif False:
    ProjectConnectorsTwilioCoreSendersVoiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioCoreSendersVoiceArgs:
    def __init__(__self__, *,
                 phone_number: pulumi.Input[str]):
        pulumi.set(__self__, "phone_number", phone_number)

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

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


if not MYPY:
    class ProjectConnectorsTwilioVerifyArgsDict(TypedDict):
        account_sid: pulumi.Input[str]
        authentication: pulumi.Input['ProjectConnectorsTwilioVerifyAuthenticationArgsDict']
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        service_sid: pulumi.Input[str]
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
        sender: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTwilioVerifyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioVerifyArgs:
    def __init__(__self__, *,
                 account_sid: pulumi.Input[str],
                 authentication: pulumi.Input['ProjectConnectorsTwilioVerifyAuthenticationArgs'],
                 name: pulumi.Input[str],
                 service_sid: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 sender: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "account_sid", account_sid)
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "service_sid", service_sid)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if sender is not None:
            pulumi.set(__self__, "sender", sender)

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

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

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

    @authentication.setter
    def authentication(self, value: pulumi.Input['ProjectConnectorsTwilioVerifyAuthenticationArgs']):
        pulumi.set(self, "authentication", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsTwilioVerifyAuthenticationArgsDict(TypedDict):
        api_key: NotRequired[pulumi.Input[str]]
        api_secret: NotRequired[pulumi.Input[str]]
        auth_token: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsTwilioVerifyAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsTwilioVerifyAuthenticationArgs:
    def __init__(__self__, *,
                 api_key: Optional[pulumi.Input[str]] = None,
                 api_secret: Optional[pulumi.Input[str]] = None,
                 auth_token: Optional[pulumi.Input[str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if api_secret is not None:
            pulumi.set(__self__, "api_secret", api_secret)
        if auth_token is not None:
            pulumi.set(__self__, "auth_token", auth_token)

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

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

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

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

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

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


if not MYPY:
    class ProjectConnectorsVeriffArgsDict(TypedDict):
        api_key: pulumi.Input[str]
        """
        The Veriff Public API Key, you can find under Veriff Station - Integrations.
        """
        name: pulumi.Input[str]
        """
        A custom name for your connector.
        """
        secret_key: pulumi.Input[str]
        """
        The Veriff Shared secret key, you can find under Veriff Station - Integrations.
        """
        base_url: NotRequired[pulumi.Input[str]]
        """
        The base URL of the Veriff API, default value is https://stationapi.veriff.com.
        """
        description: NotRequired[pulumi.Input[str]]
        """
        A description of what your connector is used for.
        """
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectConnectorsVeriffArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectConnectorsVeriffArgs:
    def __init__(__self__, *,
                 api_key: pulumi.Input[str],
                 name: pulumi.Input[str],
                 secret_key: pulumi.Input[str],
                 base_url: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] api_key: The Veriff Public API Key, you can find under Veriff Station - Integrations.
        :param pulumi.Input[str] name: A custom name for your connector.
        :param pulumi.Input[str] secret_key: The Veriff Shared secret key, you can find under Veriff Station - Integrations.
        :param pulumi.Input[str] base_url: The base URL of the Veriff API, default value is https://stationapi.veriff.com.
        :param pulumi.Input[str] description: A description of what your connector is used for.
        """
        pulumi.set(__self__, "api_key", api_key)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "secret_key", secret_key)
        if base_url is not None:
            pulumi.set(__self__, "base_url", base_url)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> pulumi.Input[str]:
        """
        The Veriff Public API Key, you can find under Veriff Station - Integrations.
        """
        return pulumi.get(self, "api_key")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A custom name for your connector.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="secretKey")
    def secret_key(self) -> pulumi.Input[str]:
        """
        The Veriff Shared secret key, you can find under Veriff Station - Integrations.
        """
        return pulumi.get(self, "secret_key")

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

    @property
    @pulumi.getter(name="baseUrl")
    def base_url(self) -> Optional[pulumi.Input[str]]:
        """
        The base URL of the Veriff API, default value is https://stationapi.veriff.com.
        """
        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
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A description of what your connector is used for.
        """
        return pulumi.get(self, "description")

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

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

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


if not MYPY:
    class ProjectFlowsArgsDict(TypedDict):
        data: pulumi.Input[str]
elif False:
    ProjectFlowsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectFlowsArgs:
    def __init__(__self__, *,
                 data: pulumi.Input[str]):
        pulumi.set(__self__, "data", data)

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

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


if not MYPY:
    class ProjectJwtTemplatesArgsDict(TypedDict):
        access_key_templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesAccessKeyTemplateArgsDict']]]]
        user_templates: NotRequired[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesUserTemplateArgsDict']]]]
elif False:
    ProjectJwtTemplatesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectJwtTemplatesArgs:
    def __init__(__self__, *,
                 access_key_templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesAccessKeyTemplateArgs']]]] = None,
                 user_templates: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesUserTemplateArgs']]]] = None):
        if access_key_templates is not None:
            pulumi.set(__self__, "access_key_templates", access_key_templates)
        if user_templates is not None:
            pulumi.set(__self__, "user_templates", user_templates)

    @property
    @pulumi.getter(name="accessKeyTemplates")
    def access_key_templates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesAccessKeyTemplateArgs']]]]:
        return pulumi.get(self, "access_key_templates")

    @access_key_templates.setter
    def access_key_templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesAccessKeyTemplateArgs']]]]):
        pulumi.set(self, "access_key_templates", value)

    @property
    @pulumi.getter(name="userTemplates")
    def user_templates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesUserTemplateArgs']]]]:
        return pulumi.get(self, "user_templates")

    @user_templates.setter
    def user_templates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectJwtTemplatesUserTemplateArgs']]]]):
        pulumi.set(self, "user_templates", value)


if not MYPY:
    class ProjectJwtTemplatesAccessKeyTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        template: pulumi.Input[str]
        auth_schema: NotRequired[pulumi.Input[str]]
        conformance_issuer: NotRequired[pulumi.Input[bool]]
        description: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectJwtTemplatesAccessKeyTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectJwtTemplatesAccessKeyTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 template: pulumi.Input[str],
                 auth_schema: Optional[pulumi.Input[str]] = None,
                 conformance_issuer: Optional[pulumi.Input[bool]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "template", template)
        if auth_schema is not None:
            pulumi.set(__self__, "auth_schema", auth_schema)
        if conformance_issuer is not None:
            pulumi.set(__self__, "conformance_issuer", conformance_issuer)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

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

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

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

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

    @conformance_issuer.setter
    def conformance_issuer(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "conformance_issuer", 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
    def id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "id")

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


if not MYPY:
    class ProjectJwtTemplatesUserTemplateArgsDict(TypedDict):
        name: pulumi.Input[str]
        template: pulumi.Input[str]
        auth_schema: NotRequired[pulumi.Input[str]]
        conformance_issuer: NotRequired[pulumi.Input[bool]]
        description: NotRequired[pulumi.Input[str]]
        id: NotRequired[pulumi.Input[str]]
elif False:
    ProjectJwtTemplatesUserTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectJwtTemplatesUserTemplateArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 template: pulumi.Input[str],
                 auth_schema: Optional[pulumi.Input[str]] = None,
                 conformance_issuer: Optional[pulumi.Input[bool]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "template", template)
        if auth_schema is not None:
            pulumi.set(__self__, "auth_schema", auth_schema)
        if conformance_issuer is not None:
            pulumi.set(__self__, "conformance_issuer", conformance_issuer)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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

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

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

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

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

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

    @conformance_issuer.setter
    def conformance_issuer(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "conformance_issuer", 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
    def id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "id")

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


if not MYPY:
    class ProjectProjectSettingsArgsDict(TypedDict):
        access_key_jwt_template: NotRequired[pulumi.Input[str]]
        cookie_policy: NotRequired[pulumi.Input[str]]
        domain: NotRequired[pulumi.Input[str]]
        enable_inactivity: NotRequired[pulumi.Input[bool]]
        inactivity_time: NotRequired[pulumi.Input[str]]
        refresh_token_expiration: NotRequired[pulumi.Input[str]]
        user_jwt_template: NotRequired[pulumi.Input[str]]
elif False:
    ProjectProjectSettingsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectProjectSettingsArgs:
    def __init__(__self__, *,
                 access_key_jwt_template: Optional[pulumi.Input[str]] = None,
                 cookie_policy: Optional[pulumi.Input[str]] = None,
                 domain: Optional[pulumi.Input[str]] = None,
                 enable_inactivity: Optional[pulumi.Input[bool]] = None,
                 inactivity_time: Optional[pulumi.Input[str]] = None,
                 refresh_token_expiration: Optional[pulumi.Input[str]] = None,
                 user_jwt_template: Optional[pulumi.Input[str]] = None):
        if access_key_jwt_template is not None:
            pulumi.set(__self__, "access_key_jwt_template", access_key_jwt_template)
        if cookie_policy is not None:
            pulumi.set(__self__, "cookie_policy", cookie_policy)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enable_inactivity is not None:
            pulumi.set(__self__, "enable_inactivity", enable_inactivity)
        if inactivity_time is not None:
            pulumi.set(__self__, "inactivity_time", inactivity_time)
        if refresh_token_expiration is not None:
            pulumi.set(__self__, "refresh_token_expiration", refresh_token_expiration)
        if user_jwt_template is not None:
            pulumi.set(__self__, "user_jwt_template", user_jwt_template)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


if not MYPY:
    class ProjectStylesArgsDict(TypedDict):
        data: pulumi.Input[str]
elif False:
    ProjectStylesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectStylesArgs:
    def __init__(__self__, *,
                 data: pulumi.Input[str]):
        pulumi.set(__self__, "data", data)

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

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


