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

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

__all__ = [
    'GetDomainsIdentityProviderResult',
    'AwaitableGetDomainsIdentityProviderResult',
    'get_domains_identity_provider',
    'get_domains_identity_provider_output',
]

@pulumi.output_type
class GetDomainsIdentityProviderResult:
    """
    A collection of values returned by getDomainsIdentityProvider.
    """
    def __init__(__self__, assertion_attribute=None, attribute_sets=None, attributes=None, authn_request_binding=None, authorization=None, compartment_ocid=None, correlation_policies=None, delete_in_progress=None, description=None, domain_ocid=None, enabled=None, encryption_certificate=None, external_id=None, icon_url=None, id=None, idcs_created_bies=None, idcs_endpoint=None, idcs_last_modified_bies=None, idcs_last_upgraded_in_release=None, idcs_prevented_operations=None, identity_provider_id=None, idp_sso_url=None, include_signing_cert_in_signature=None, jit_user_prov_assigned_groups=None, jit_user_prov_attribute_update_enabled=None, jit_user_prov_attributes=None, jit_user_prov_create_user_enabled=None, jit_user_prov_enabled=None, jit_user_prov_group_assertion_attribute_enabled=None, jit_user_prov_group_assignment_method=None, jit_user_prov_group_mapping_mode=None, jit_user_prov_group_mappings=None, jit_user_prov_group_saml_attribute_name=None, jit_user_prov_group_static_list_enabled=None, jit_user_prov_ignore_error_on_absent_groups=None, logout_binding=None, logout_enabled=None, logout_request_url=None, logout_response_url=None, metadata=None, metas=None, name_id_format=None, ocid=None, partner_name=None, partner_provider_id=None, requested_authentication_contexts=None, require_force_authn=None, requires_encrypted_assertion=None, resource_type_schema_version=None, saml_ho_krequired=None, schemas=None, service_instance_identifier=None, shown_on_login_page=None, signature_hash_algorithm=None, signing_certificate=None, succinct_id=None, tags=None, tenancy_ocid=None, tenant_provider_id=None, type=None, urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers=None, urnietfparamsscimschemasoracleidcsextensionx509identity_providers=None, user_mapping_method=None, user_mapping_store_attribute=None):
        if assertion_attribute and not isinstance(assertion_attribute, str):
            raise TypeError("Expected argument 'assertion_attribute' to be a str")
        pulumi.set(__self__, "assertion_attribute", assertion_attribute)
        if attribute_sets and not isinstance(attribute_sets, list):
            raise TypeError("Expected argument 'attribute_sets' to be a list")
        pulumi.set(__self__, "attribute_sets", attribute_sets)
        if attributes and not isinstance(attributes, str):
            raise TypeError("Expected argument 'attributes' to be a str")
        pulumi.set(__self__, "attributes", attributes)
        if authn_request_binding and not isinstance(authn_request_binding, str):
            raise TypeError("Expected argument 'authn_request_binding' to be a str")
        pulumi.set(__self__, "authn_request_binding", authn_request_binding)
        if authorization and not isinstance(authorization, str):
            raise TypeError("Expected argument 'authorization' to be a str")
        pulumi.set(__self__, "authorization", authorization)
        if compartment_ocid and not isinstance(compartment_ocid, str):
            raise TypeError("Expected argument 'compartment_ocid' to be a str")
        pulumi.set(__self__, "compartment_ocid", compartment_ocid)
        if correlation_policies and not isinstance(correlation_policies, list):
            raise TypeError("Expected argument 'correlation_policies' to be a list")
        pulumi.set(__self__, "correlation_policies", correlation_policies)
        if delete_in_progress and not isinstance(delete_in_progress, bool):
            raise TypeError("Expected argument 'delete_in_progress' to be a bool")
        pulumi.set(__self__, "delete_in_progress", delete_in_progress)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if domain_ocid and not isinstance(domain_ocid, str):
            raise TypeError("Expected argument 'domain_ocid' to be a str")
        pulumi.set(__self__, "domain_ocid", domain_ocid)
        if enabled and not isinstance(enabled, bool):
            raise TypeError("Expected argument 'enabled' to be a bool")
        pulumi.set(__self__, "enabled", enabled)
        if encryption_certificate and not isinstance(encryption_certificate, str):
            raise TypeError("Expected argument 'encryption_certificate' to be a str")
        pulumi.set(__self__, "encryption_certificate", encryption_certificate)
        if external_id and not isinstance(external_id, str):
            raise TypeError("Expected argument 'external_id' to be a str")
        pulumi.set(__self__, "external_id", external_id)
        if icon_url and not isinstance(icon_url, str):
            raise TypeError("Expected argument 'icon_url' to be a str")
        pulumi.set(__self__, "icon_url", icon_url)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if idcs_created_bies and not isinstance(idcs_created_bies, list):
            raise TypeError("Expected argument 'idcs_created_bies' to be a list")
        pulumi.set(__self__, "idcs_created_bies", idcs_created_bies)
        if idcs_endpoint and not isinstance(idcs_endpoint, str):
            raise TypeError("Expected argument 'idcs_endpoint' to be a str")
        pulumi.set(__self__, "idcs_endpoint", idcs_endpoint)
        if idcs_last_modified_bies and not isinstance(idcs_last_modified_bies, list):
            raise TypeError("Expected argument 'idcs_last_modified_bies' to be a list")
        pulumi.set(__self__, "idcs_last_modified_bies", idcs_last_modified_bies)
        if idcs_last_upgraded_in_release and not isinstance(idcs_last_upgraded_in_release, str):
            raise TypeError("Expected argument 'idcs_last_upgraded_in_release' to be a str")
        pulumi.set(__self__, "idcs_last_upgraded_in_release", idcs_last_upgraded_in_release)
        if idcs_prevented_operations and not isinstance(idcs_prevented_operations, list):
            raise TypeError("Expected argument 'idcs_prevented_operations' to be a list")
        pulumi.set(__self__, "idcs_prevented_operations", idcs_prevented_operations)
        if identity_provider_id and not isinstance(identity_provider_id, str):
            raise TypeError("Expected argument 'identity_provider_id' to be a str")
        pulumi.set(__self__, "identity_provider_id", identity_provider_id)
        if idp_sso_url and not isinstance(idp_sso_url, str):
            raise TypeError("Expected argument 'idp_sso_url' to be a str")
        pulumi.set(__self__, "idp_sso_url", idp_sso_url)
        if include_signing_cert_in_signature and not isinstance(include_signing_cert_in_signature, bool):
            raise TypeError("Expected argument 'include_signing_cert_in_signature' to be a bool")
        pulumi.set(__self__, "include_signing_cert_in_signature", include_signing_cert_in_signature)
        if jit_user_prov_assigned_groups and not isinstance(jit_user_prov_assigned_groups, list):
            raise TypeError("Expected argument 'jit_user_prov_assigned_groups' to be a list")
        pulumi.set(__self__, "jit_user_prov_assigned_groups", jit_user_prov_assigned_groups)
        if jit_user_prov_attribute_update_enabled and not isinstance(jit_user_prov_attribute_update_enabled, bool):
            raise TypeError("Expected argument 'jit_user_prov_attribute_update_enabled' to be a bool")
        pulumi.set(__self__, "jit_user_prov_attribute_update_enabled", jit_user_prov_attribute_update_enabled)
        if jit_user_prov_attributes and not isinstance(jit_user_prov_attributes, list):
            raise TypeError("Expected argument 'jit_user_prov_attributes' to be a list")
        pulumi.set(__self__, "jit_user_prov_attributes", jit_user_prov_attributes)
        if jit_user_prov_create_user_enabled and not isinstance(jit_user_prov_create_user_enabled, bool):
            raise TypeError("Expected argument 'jit_user_prov_create_user_enabled' to be a bool")
        pulumi.set(__self__, "jit_user_prov_create_user_enabled", jit_user_prov_create_user_enabled)
        if jit_user_prov_enabled and not isinstance(jit_user_prov_enabled, bool):
            raise TypeError("Expected argument 'jit_user_prov_enabled' to be a bool")
        pulumi.set(__self__, "jit_user_prov_enabled", jit_user_prov_enabled)
        if jit_user_prov_group_assertion_attribute_enabled and not isinstance(jit_user_prov_group_assertion_attribute_enabled, bool):
            raise TypeError("Expected argument 'jit_user_prov_group_assertion_attribute_enabled' to be a bool")
        pulumi.set(__self__, "jit_user_prov_group_assertion_attribute_enabled", jit_user_prov_group_assertion_attribute_enabled)
        if jit_user_prov_group_assignment_method and not isinstance(jit_user_prov_group_assignment_method, str):
            raise TypeError("Expected argument 'jit_user_prov_group_assignment_method' to be a str")
        pulumi.set(__self__, "jit_user_prov_group_assignment_method", jit_user_prov_group_assignment_method)
        if jit_user_prov_group_mapping_mode and not isinstance(jit_user_prov_group_mapping_mode, str):
            raise TypeError("Expected argument 'jit_user_prov_group_mapping_mode' to be a str")
        pulumi.set(__self__, "jit_user_prov_group_mapping_mode", jit_user_prov_group_mapping_mode)
        if jit_user_prov_group_mappings and not isinstance(jit_user_prov_group_mappings, list):
            raise TypeError("Expected argument 'jit_user_prov_group_mappings' to be a list")
        pulumi.set(__self__, "jit_user_prov_group_mappings", jit_user_prov_group_mappings)
        if jit_user_prov_group_saml_attribute_name and not isinstance(jit_user_prov_group_saml_attribute_name, str):
            raise TypeError("Expected argument 'jit_user_prov_group_saml_attribute_name' to be a str")
        pulumi.set(__self__, "jit_user_prov_group_saml_attribute_name", jit_user_prov_group_saml_attribute_name)
        if jit_user_prov_group_static_list_enabled and not isinstance(jit_user_prov_group_static_list_enabled, bool):
            raise TypeError("Expected argument 'jit_user_prov_group_static_list_enabled' to be a bool")
        pulumi.set(__self__, "jit_user_prov_group_static_list_enabled", jit_user_prov_group_static_list_enabled)
        if jit_user_prov_ignore_error_on_absent_groups and not isinstance(jit_user_prov_ignore_error_on_absent_groups, bool):
            raise TypeError("Expected argument 'jit_user_prov_ignore_error_on_absent_groups' to be a bool")
        pulumi.set(__self__, "jit_user_prov_ignore_error_on_absent_groups", jit_user_prov_ignore_error_on_absent_groups)
        if logout_binding and not isinstance(logout_binding, str):
            raise TypeError("Expected argument 'logout_binding' to be a str")
        pulumi.set(__self__, "logout_binding", logout_binding)
        if logout_enabled and not isinstance(logout_enabled, bool):
            raise TypeError("Expected argument 'logout_enabled' to be a bool")
        pulumi.set(__self__, "logout_enabled", logout_enabled)
        if logout_request_url and not isinstance(logout_request_url, str):
            raise TypeError("Expected argument 'logout_request_url' to be a str")
        pulumi.set(__self__, "logout_request_url", logout_request_url)
        if logout_response_url and not isinstance(logout_response_url, str):
            raise TypeError("Expected argument 'logout_response_url' to be a str")
        pulumi.set(__self__, "logout_response_url", logout_response_url)
        if metadata and not isinstance(metadata, str):
            raise TypeError("Expected argument 'metadata' to be a str")
        pulumi.set(__self__, "metadata", metadata)
        if metas and not isinstance(metas, list):
            raise TypeError("Expected argument 'metas' to be a list")
        pulumi.set(__self__, "metas", metas)
        if name_id_format and not isinstance(name_id_format, str):
            raise TypeError("Expected argument 'name_id_format' to be a str")
        pulumi.set(__self__, "name_id_format", name_id_format)
        if ocid and not isinstance(ocid, str):
            raise TypeError("Expected argument 'ocid' to be a str")
        pulumi.set(__self__, "ocid", ocid)
        if partner_name and not isinstance(partner_name, str):
            raise TypeError("Expected argument 'partner_name' to be a str")
        pulumi.set(__self__, "partner_name", partner_name)
        if partner_provider_id and not isinstance(partner_provider_id, str):
            raise TypeError("Expected argument 'partner_provider_id' to be a str")
        pulumi.set(__self__, "partner_provider_id", partner_provider_id)
        if requested_authentication_contexts and not isinstance(requested_authentication_contexts, list):
            raise TypeError("Expected argument 'requested_authentication_contexts' to be a list")
        pulumi.set(__self__, "requested_authentication_contexts", requested_authentication_contexts)
        if require_force_authn and not isinstance(require_force_authn, bool):
            raise TypeError("Expected argument 'require_force_authn' to be a bool")
        pulumi.set(__self__, "require_force_authn", require_force_authn)
        if requires_encrypted_assertion and not isinstance(requires_encrypted_assertion, bool):
            raise TypeError("Expected argument 'requires_encrypted_assertion' to be a bool")
        pulumi.set(__self__, "requires_encrypted_assertion", requires_encrypted_assertion)
        if resource_type_schema_version and not isinstance(resource_type_schema_version, str):
            raise TypeError("Expected argument 'resource_type_schema_version' to be a str")
        pulumi.set(__self__, "resource_type_schema_version", resource_type_schema_version)
        if saml_ho_krequired and not isinstance(saml_ho_krequired, bool):
            raise TypeError("Expected argument 'saml_ho_krequired' to be a bool")
        pulumi.set(__self__, "saml_ho_krequired", saml_ho_krequired)
        if schemas and not isinstance(schemas, list):
            raise TypeError("Expected argument 'schemas' to be a list")
        pulumi.set(__self__, "schemas", schemas)
        if service_instance_identifier and not isinstance(service_instance_identifier, str):
            raise TypeError("Expected argument 'service_instance_identifier' to be a str")
        pulumi.set(__self__, "service_instance_identifier", service_instance_identifier)
        if shown_on_login_page and not isinstance(shown_on_login_page, bool):
            raise TypeError("Expected argument 'shown_on_login_page' to be a bool")
        pulumi.set(__self__, "shown_on_login_page", shown_on_login_page)
        if signature_hash_algorithm and not isinstance(signature_hash_algorithm, str):
            raise TypeError("Expected argument 'signature_hash_algorithm' to be a str")
        pulumi.set(__self__, "signature_hash_algorithm", signature_hash_algorithm)
        if signing_certificate and not isinstance(signing_certificate, str):
            raise TypeError("Expected argument 'signing_certificate' to be a str")
        pulumi.set(__self__, "signing_certificate", signing_certificate)
        if succinct_id and not isinstance(succinct_id, str):
            raise TypeError("Expected argument 'succinct_id' to be a str")
        pulumi.set(__self__, "succinct_id", succinct_id)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if tenancy_ocid and not isinstance(tenancy_ocid, str):
            raise TypeError("Expected argument 'tenancy_ocid' to be a str")
        pulumi.set(__self__, "tenancy_ocid", tenancy_ocid)
        if tenant_provider_id and not isinstance(tenant_provider_id, str):
            raise TypeError("Expected argument 'tenant_provider_id' to be a str")
        pulumi.set(__self__, "tenant_provider_id", tenant_provider_id)
        if type and not isinstance(type, str):
            raise TypeError("Expected argument 'type' to be a str")
        pulumi.set(__self__, "type", type)
        if urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers and not isinstance(urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers, list):
            raise TypeError("Expected argument 'urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers' to be a list")
        pulumi.set(__self__, "urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers", urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers)
        if urnietfparamsscimschemasoracleidcsextensionx509identity_providers and not isinstance(urnietfparamsscimschemasoracleidcsextensionx509identity_providers, list):
            raise TypeError("Expected argument 'urnietfparamsscimschemasoracleidcsextensionx509identity_providers' to be a list")
        pulumi.set(__self__, "urnietfparamsscimschemasoracleidcsextensionx509identity_providers", urnietfparamsscimschemasoracleidcsextensionx509identity_providers)
        if user_mapping_method and not isinstance(user_mapping_method, str):
            raise TypeError("Expected argument 'user_mapping_method' to be a str")
        pulumi.set(__self__, "user_mapping_method", user_mapping_method)
        if user_mapping_store_attribute and not isinstance(user_mapping_store_attribute, str):
            raise TypeError("Expected argument 'user_mapping_store_attribute' to be a str")
        pulumi.set(__self__, "user_mapping_store_attribute", user_mapping_store_attribute)

    @property
    @pulumi.getter(name="assertionAttribute")
    def assertion_attribute(self) -> str:
        """
        Assertion attribute name.
        """
        return pulumi.get(self, "assertion_attribute")

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

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

    @property
    @pulumi.getter(name="authnRequestBinding")
    def authn_request_binding(self) -> str:
        """
        HTTP binding to use for authentication requests.
        """
        return pulumi.get(self, "authn_request_binding")

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

    @property
    @pulumi.getter(name="compartmentOcid")
    def compartment_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Compartment Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "compartment_ocid")

    @property
    @pulumi.getter(name="correlationPolicies")
    def correlation_policies(self) -> Sequence['outputs.GetDomainsIdentityProviderCorrelationPolicyResult']:
        """
        Correlation policy
        """
        return pulumi.get(self, "correlation_policies")

    @property
    @pulumi.getter(name="deleteInProgress")
    def delete_in_progress(self) -> bool:
        """
        A boolean flag indicating this resource in the process of being deleted. Usually set to true when synchronous deletion of the resource would take too long.
        """
        return pulumi.get(self, "delete_in_progress")

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

    @property
    @pulumi.getter(name="domainOcid")
    def domain_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Domain Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "domain_ocid")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        Set to true to indicate Partner enabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="encryptionCertificate")
    def encryption_certificate(self) -> str:
        """
        Encryption certificate
        """
        return pulumi.get(self, "encryption_certificate")

    @property
    @pulumi.getter(name="externalId")
    def external_id(self) -> str:
        """
        An identifier for the Resource as defined by the Service Consumer. The externalId may simplify identification of the Resource between Service Consumer and Service Provider by allowing the Consumer to refer to the Resource with its own identifier, obviating the need to store a local mapping between the local identifier of the Resource and the identifier used by the Service Provider. Each Resource MAY include a non-empty externalId value. The value of the externalId attribute is always issued by the Service Consumer and can never be specified by the Service Provider. The Service Provider MUST always interpret the externalId as scoped to the Service Consumer's tenant.
        """
        return pulumi.get(self, "external_id")

    @property
    @pulumi.getter(name="iconUrl")
    def icon_url(self) -> str:
        """
        Identity Provider Icon URL.
        """
        return pulumi.get(self, "icon_url")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        Unique identifier for the SCIM Resource as defined by the Service Provider. Each representation of the Resource MUST include a non-empty id value. This identifier MUST be unique across the Service Provider's entire set of Resources. It MUST be a stable, non-reassignable identifier that does not change when the same Resource is returned in subsequent requests. The value of the id attribute is always issued by the Service Provider and MUST never be specified by the Service Consumer. bulkId: is a reserved keyword and MUST NOT be used in the unique identifier.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="idcsCreatedBies")
    def idcs_created_bies(self) -> Sequence['outputs.GetDomainsIdentityProviderIdcsCreatedByResult']:
        """
        The User or App who created the Resource
        """
        return pulumi.get(self, "idcs_created_bies")

    @property
    @pulumi.getter(name="idcsEndpoint")
    def idcs_endpoint(self) -> str:
        return pulumi.get(self, "idcs_endpoint")

    @property
    @pulumi.getter(name="idcsLastModifiedBies")
    def idcs_last_modified_bies(self) -> Sequence['outputs.GetDomainsIdentityProviderIdcsLastModifiedByResult']:
        """
        The User or App who modified the Resource
        """
        return pulumi.get(self, "idcs_last_modified_bies")

    @property
    @pulumi.getter(name="idcsLastUpgradedInRelease")
    def idcs_last_upgraded_in_release(self) -> str:
        """
        The release number when the resource was upgraded.
        """
        return pulumi.get(self, "idcs_last_upgraded_in_release")

    @property
    @pulumi.getter(name="idcsPreventedOperations")
    def idcs_prevented_operations(self) -> Sequence[str]:
        """
        Each value of this attribute specifies an operation that only an internal client may perform on this particular resource.
        """
        return pulumi.get(self, "idcs_prevented_operations")

    @property
    @pulumi.getter(name="identityProviderId")
    def identity_provider_id(self) -> str:
        return pulumi.get(self, "identity_provider_id")

    @property
    @pulumi.getter(name="idpSsoUrl")
    def idp_sso_url(self) -> str:
        """
        Identity Provider SSO URL
        """
        return pulumi.get(self, "idp_sso_url")

    @property
    @pulumi.getter(name="includeSigningCertInSignature")
    def include_signing_cert_in_signature(self) -> bool:
        """
        Set to true to include the signing certificate in the signature.
        """
        return pulumi.get(self, "include_signing_cert_in_signature")

    @property
    @pulumi.getter(name="jitUserProvAssignedGroups")
    def jit_user_prov_assigned_groups(self) -> Sequence['outputs.GetDomainsIdentityProviderJitUserProvAssignedGroupResult']:
        """
        Refers to every group of which a JIT-provisioned User should be a member.  Just-in-Time user-provisioning applies this static list when jitUserProvGroupStaticListEnabled:true.
        """
        return pulumi.get(self, "jit_user_prov_assigned_groups")

    @property
    @pulumi.getter(name="jitUserProvAttributeUpdateEnabled")
    def jit_user_prov_attribute_update_enabled(self) -> bool:
        """
        Set to true to indicate JIT User Creation is enabled
        """
        return pulumi.get(self, "jit_user_prov_attribute_update_enabled")

    @property
    @pulumi.getter(name="jitUserProvAttributes")
    def jit_user_prov_attributes(self) -> Sequence['outputs.GetDomainsIdentityProviderJitUserProvAttributeResult']:
        """
        Assertion To User Mapping
        """
        return pulumi.get(self, "jit_user_prov_attributes")

    @property
    @pulumi.getter(name="jitUserProvCreateUserEnabled")
    def jit_user_prov_create_user_enabled(self) -> bool:
        """
        Set to true to indicate JIT User Creation is enabled
        """
        return pulumi.get(self, "jit_user_prov_create_user_enabled")

    @property
    @pulumi.getter(name="jitUserProvEnabled")
    def jit_user_prov_enabled(self) -> bool:
        """
        Set to true to indicate JIT User Provisioning is enabled
        """
        return pulumi.get(self, "jit_user_prov_enabled")

    @property
    @pulumi.getter(name="jitUserProvGroupAssertionAttributeEnabled")
    def jit_user_prov_group_assertion_attribute_enabled(self) -> bool:
        """
        Set to true to indicate JIT User Provisioning Groups should be assigned based on assertion attribute
        """
        return pulumi.get(self, "jit_user_prov_group_assertion_attribute_enabled")

    @property
    @pulumi.getter(name="jitUserProvGroupAssignmentMethod")
    def jit_user_prov_group_assignment_method(self) -> str:
        """
        The default value is 'Overwrite', which tells Just-In-Time user-provisioning to replace any current group-assignments for a User with those assigned by assertions and/or those assigned statically. Specify 'Merge' if you want Just-In-Time user-provisioning to combine its group-assignments with those the user already has.
        """
        return pulumi.get(self, "jit_user_prov_group_assignment_method")

    @property
    @pulumi.getter(name="jitUserProvGroupMappingMode")
    def jit_user_prov_group_mapping_mode(self) -> str:
        """
        Property to indicate the mode of group mapping
        """
        return pulumi.get(self, "jit_user_prov_group_mapping_mode")

    @property
    @pulumi.getter(name="jitUserProvGroupMappings")
    def jit_user_prov_group_mappings(self) -> Sequence['outputs.GetDomainsIdentityProviderJitUserProvGroupMappingResult']:
        """
        The list of mappings between the Identity Domain Group and the IDP group.
        """
        return pulumi.get(self, "jit_user_prov_group_mappings")

    @property
    @pulumi.getter(name="jitUserProvGroupSamlAttributeName")
    def jit_user_prov_group_saml_attribute_name(self) -> str:
        """
        Name of the assertion attribute containing the users groups
        """
        return pulumi.get(self, "jit_user_prov_group_saml_attribute_name")

    @property
    @pulumi.getter(name="jitUserProvGroupStaticListEnabled")
    def jit_user_prov_group_static_list_enabled(self) -> bool:
        """
        Set to true to indicate JIT User Provisioning Groups should be assigned from a static list
        """
        return pulumi.get(self, "jit_user_prov_group_static_list_enabled")

    @property
    @pulumi.getter(name="jitUserProvIgnoreErrorOnAbsentGroups")
    def jit_user_prov_ignore_error_on_absent_groups(self) -> bool:
        """
        Set to true to indicate ignoring absence of group while provisioning
        """
        return pulumi.get(self, "jit_user_prov_ignore_error_on_absent_groups")

    @property
    @pulumi.getter(name="logoutBinding")
    def logout_binding(self) -> str:
        """
        HTTP binding to use for logout.
        """
        return pulumi.get(self, "logout_binding")

    @property
    @pulumi.getter(name="logoutEnabled")
    def logout_enabled(self) -> bool:
        """
        Set to true to enable logout.
        """
        return pulumi.get(self, "logout_enabled")

    @property
    @pulumi.getter(name="logoutRequestUrl")
    def logout_request_url(self) -> str:
        """
        Logout request URL
        """
        return pulumi.get(self, "logout_request_url")

    @property
    @pulumi.getter(name="logoutResponseUrl")
    def logout_response_url(self) -> str:
        """
        Logout response URL
        """
        return pulumi.get(self, "logout_response_url")

    @property
    @pulumi.getter
    def metadata(self) -> str:
        """
        Metadata
        """
        return pulumi.get(self, "metadata")

    @property
    @pulumi.getter
    def metas(self) -> Sequence['outputs.GetDomainsIdentityProviderMetaResult']:
        """
        A complex attribute that contains resource metadata. All sub-attributes are OPTIONAL.
        """
        return pulumi.get(self, "metas")

    @property
    @pulumi.getter(name="nameIdFormat")
    def name_id_format(self) -> str:
        """
        Default authentication request name ID format.
        """
        return pulumi.get(self, "name_id_format")

    @property
    @pulumi.getter
    def ocid(self) -> str:
        """
        Unique Oracle Cloud Infrastructure identifier for the SCIM Resource.
        """
        return pulumi.get(self, "ocid")

    @property
    @pulumi.getter(name="partnerName")
    def partner_name(self) -> str:
        """
        Unique name of the trusted Identity Provider.
        """
        return pulumi.get(self, "partner_name")

    @property
    @pulumi.getter(name="partnerProviderId")
    def partner_provider_id(self) -> str:
        """
        Provider ID
        """
        return pulumi.get(self, "partner_provider_id")

    @property
    @pulumi.getter(name="requestedAuthenticationContexts")
    def requested_authentication_contexts(self) -> Sequence[str]:
        """
        SAML SP authentication type.
        """
        return pulumi.get(self, "requested_authentication_contexts")

    @property
    @pulumi.getter(name="requireForceAuthn")
    def require_force_authn(self) -> bool:
        """
        This SP requires requests SAML IdP to enforce re-authentication.
        """
        return pulumi.get(self, "require_force_authn")

    @property
    @pulumi.getter(name="requiresEncryptedAssertion")
    def requires_encrypted_assertion(self) -> bool:
        """
        SAML SP must accept encrypted assertion only.
        """
        return pulumi.get(self, "requires_encrypted_assertion")

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

    @property
    @pulumi.getter(name="samlHoKrequired")
    def saml_ho_krequired(self) -> bool:
        """
        SAML SP HoK Enabled.
        """
        return pulumi.get(self, "saml_ho_krequired")

    @property
    @pulumi.getter
    def schemas(self) -> Sequence[str]:
        """
        REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \\"enterprise\\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior.
        """
        return pulumi.get(self, "schemas")

    @property
    @pulumi.getter(name="serviceInstanceIdentifier")
    def service_instance_identifier(self) -> str:
        """
        The serviceInstanceIdentifier of the App that hosts this IdP. This value will match the opcServiceInstanceGUID of any service-instance that the IdP represents.
        """
        return pulumi.get(self, "service_instance_identifier")

    @property
    @pulumi.getter(name="shownOnLoginPage")
    def shown_on_login_page(self) -> bool:
        """
        Set to true to indicate whether to show IdP in login page or not.
        """
        return pulumi.get(self, "shown_on_login_page")

    @property
    @pulumi.getter(name="signatureHashAlgorithm")
    def signature_hash_algorithm(self) -> str:
        """
        Signature hash algorithm.
        """
        return pulumi.get(self, "signature_hash_algorithm")

    @property
    @pulumi.getter(name="signingCertificate")
    def signing_certificate(self) -> str:
        """
        Signing certificate
        """
        return pulumi.get(self, "signing_certificate")

    @property
    @pulumi.getter(name="succinctId")
    def succinct_id(self) -> str:
        """
        Succinct ID
        """
        return pulumi.get(self, "succinct_id")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetDomainsIdentityProviderTagResult']:
        """
        A list of tags on this resource.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="tenancyOcid")
    def tenancy_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Tenant Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "tenancy_ocid")

    @property
    @pulumi.getter(name="tenantProviderId")
    def tenant_provider_id(self) -> str:
        """
        The alternate Provider ID to be used as the Oracle Identity Cloud Service providerID (instead of the one in SamlSettings) when interacting with this IdP.
        """
        return pulumi.get(self, "tenant_provider_id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Identity Provider Type
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="urnietfparamsscimschemasoracleidcsextensionsocialIdentityProviders")
    def urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers(self) -> Sequence['outputs.GetDomainsIdentityProviderUrnietfparamsscimschemasoracleidcsextensionsocialIdentityProviderResult']:
        """
        Social Identity Provider Extension Schema
        """
        return pulumi.get(self, "urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers")

    @property
    @pulumi.getter(name="urnietfparamsscimschemasoracleidcsextensionx509identityProviders")
    def urnietfparamsscimschemasoracleidcsextensionx509identity_providers(self) -> Sequence['outputs.GetDomainsIdentityProviderUrnietfparamsscimschemasoracleidcsextensionx509identityProviderResult']:
        """
        X509 Identity Provider Extension Schema
        """
        return pulumi.get(self, "urnietfparamsscimschemasoracleidcsextensionx509identity_providers")

    @property
    @pulumi.getter(name="userMappingMethod")
    def user_mapping_method(self) -> str:
        """
        User mapping method.
        """
        return pulumi.get(self, "user_mapping_method")

    @property
    @pulumi.getter(name="userMappingStoreAttribute")
    def user_mapping_store_attribute(self) -> str:
        """
        This property specifies the userstore attribute value that must match the incoming assertion attribute value or the incoming nameid attribute value in order to identify the user during SSO.<br>You can construct the userMappingStoreAttribute value by specifying attributes from the Oracle Identity Cloud Service Core Users schema. For examples of how to construct the userMappingStoreAttribute value, see the <b>Example of a Request Body</b> section of the Examples tab for the <a href='./op-admin-v1-identityproviders-post.html'>POST</a> and <a href='./op-admin-v1-identityproviders-id-put.html'>PUT</a> methods of the /IdentityProviders endpoint.
        """
        return pulumi.get(self, "user_mapping_store_attribute")


class AwaitableGetDomainsIdentityProviderResult(GetDomainsIdentityProviderResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDomainsIdentityProviderResult(
            assertion_attribute=self.assertion_attribute,
            attribute_sets=self.attribute_sets,
            attributes=self.attributes,
            authn_request_binding=self.authn_request_binding,
            authorization=self.authorization,
            compartment_ocid=self.compartment_ocid,
            correlation_policies=self.correlation_policies,
            delete_in_progress=self.delete_in_progress,
            description=self.description,
            domain_ocid=self.domain_ocid,
            enabled=self.enabled,
            encryption_certificate=self.encryption_certificate,
            external_id=self.external_id,
            icon_url=self.icon_url,
            id=self.id,
            idcs_created_bies=self.idcs_created_bies,
            idcs_endpoint=self.idcs_endpoint,
            idcs_last_modified_bies=self.idcs_last_modified_bies,
            idcs_last_upgraded_in_release=self.idcs_last_upgraded_in_release,
            idcs_prevented_operations=self.idcs_prevented_operations,
            identity_provider_id=self.identity_provider_id,
            idp_sso_url=self.idp_sso_url,
            include_signing_cert_in_signature=self.include_signing_cert_in_signature,
            jit_user_prov_assigned_groups=self.jit_user_prov_assigned_groups,
            jit_user_prov_attribute_update_enabled=self.jit_user_prov_attribute_update_enabled,
            jit_user_prov_attributes=self.jit_user_prov_attributes,
            jit_user_prov_create_user_enabled=self.jit_user_prov_create_user_enabled,
            jit_user_prov_enabled=self.jit_user_prov_enabled,
            jit_user_prov_group_assertion_attribute_enabled=self.jit_user_prov_group_assertion_attribute_enabled,
            jit_user_prov_group_assignment_method=self.jit_user_prov_group_assignment_method,
            jit_user_prov_group_mapping_mode=self.jit_user_prov_group_mapping_mode,
            jit_user_prov_group_mappings=self.jit_user_prov_group_mappings,
            jit_user_prov_group_saml_attribute_name=self.jit_user_prov_group_saml_attribute_name,
            jit_user_prov_group_static_list_enabled=self.jit_user_prov_group_static_list_enabled,
            jit_user_prov_ignore_error_on_absent_groups=self.jit_user_prov_ignore_error_on_absent_groups,
            logout_binding=self.logout_binding,
            logout_enabled=self.logout_enabled,
            logout_request_url=self.logout_request_url,
            logout_response_url=self.logout_response_url,
            metadata=self.metadata,
            metas=self.metas,
            name_id_format=self.name_id_format,
            ocid=self.ocid,
            partner_name=self.partner_name,
            partner_provider_id=self.partner_provider_id,
            requested_authentication_contexts=self.requested_authentication_contexts,
            require_force_authn=self.require_force_authn,
            requires_encrypted_assertion=self.requires_encrypted_assertion,
            resource_type_schema_version=self.resource_type_schema_version,
            saml_ho_krequired=self.saml_ho_krequired,
            schemas=self.schemas,
            service_instance_identifier=self.service_instance_identifier,
            shown_on_login_page=self.shown_on_login_page,
            signature_hash_algorithm=self.signature_hash_algorithm,
            signing_certificate=self.signing_certificate,
            succinct_id=self.succinct_id,
            tags=self.tags,
            tenancy_ocid=self.tenancy_ocid,
            tenant_provider_id=self.tenant_provider_id,
            type=self.type,
            urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers=self.urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers,
            urnietfparamsscimschemasoracleidcsextensionx509identity_providers=self.urnietfparamsscimschemasoracleidcsextensionx509identity_providers,
            user_mapping_method=self.user_mapping_method,
            user_mapping_store_attribute=self.user_mapping_store_attribute)


def get_domains_identity_provider(attribute_sets: Optional[Sequence[str]] = None,
                                  attributes: Optional[str] = None,
                                  authorization: Optional[str] = None,
                                  idcs_endpoint: Optional[str] = None,
                                  identity_provider_id: Optional[str] = None,
                                  resource_type_schema_version: Optional[str] = None,
                                  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDomainsIdentityProviderResult:
    """
    This data source provides details about a specific Identity Provider resource in Oracle Cloud Infrastructure Identity Domains service.

    Get an Identity Provider

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_identity_provider = oci.Identity.get_domains_identity_provider(idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        identity_provider_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str identity_provider_id: ID of the resource
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    __args__ = dict()
    __args__['attributeSets'] = attribute_sets
    __args__['attributes'] = attributes
    __args__['authorization'] = authorization
    __args__['idcsEndpoint'] = idcs_endpoint
    __args__['identityProviderId'] = identity_provider_id
    __args__['resourceTypeSchemaVersion'] = resource_type_schema_version
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('oci:Identity/getDomainsIdentityProvider:getDomainsIdentityProvider', __args__, opts=opts, typ=GetDomainsIdentityProviderResult).value

    return AwaitableGetDomainsIdentityProviderResult(
        assertion_attribute=__ret__.assertion_attribute,
        attribute_sets=__ret__.attribute_sets,
        attributes=__ret__.attributes,
        authn_request_binding=__ret__.authn_request_binding,
        authorization=__ret__.authorization,
        compartment_ocid=__ret__.compartment_ocid,
        correlation_policies=__ret__.correlation_policies,
        delete_in_progress=__ret__.delete_in_progress,
        description=__ret__.description,
        domain_ocid=__ret__.domain_ocid,
        enabled=__ret__.enabled,
        encryption_certificate=__ret__.encryption_certificate,
        external_id=__ret__.external_id,
        icon_url=__ret__.icon_url,
        id=__ret__.id,
        idcs_created_bies=__ret__.idcs_created_bies,
        idcs_endpoint=__ret__.idcs_endpoint,
        idcs_last_modified_bies=__ret__.idcs_last_modified_bies,
        idcs_last_upgraded_in_release=__ret__.idcs_last_upgraded_in_release,
        idcs_prevented_operations=__ret__.idcs_prevented_operations,
        identity_provider_id=__ret__.identity_provider_id,
        idp_sso_url=__ret__.idp_sso_url,
        include_signing_cert_in_signature=__ret__.include_signing_cert_in_signature,
        jit_user_prov_assigned_groups=__ret__.jit_user_prov_assigned_groups,
        jit_user_prov_attribute_update_enabled=__ret__.jit_user_prov_attribute_update_enabled,
        jit_user_prov_attributes=__ret__.jit_user_prov_attributes,
        jit_user_prov_create_user_enabled=__ret__.jit_user_prov_create_user_enabled,
        jit_user_prov_enabled=__ret__.jit_user_prov_enabled,
        jit_user_prov_group_assertion_attribute_enabled=__ret__.jit_user_prov_group_assertion_attribute_enabled,
        jit_user_prov_group_assignment_method=__ret__.jit_user_prov_group_assignment_method,
        jit_user_prov_group_mapping_mode=__ret__.jit_user_prov_group_mapping_mode,
        jit_user_prov_group_mappings=__ret__.jit_user_prov_group_mappings,
        jit_user_prov_group_saml_attribute_name=__ret__.jit_user_prov_group_saml_attribute_name,
        jit_user_prov_group_static_list_enabled=__ret__.jit_user_prov_group_static_list_enabled,
        jit_user_prov_ignore_error_on_absent_groups=__ret__.jit_user_prov_ignore_error_on_absent_groups,
        logout_binding=__ret__.logout_binding,
        logout_enabled=__ret__.logout_enabled,
        logout_request_url=__ret__.logout_request_url,
        logout_response_url=__ret__.logout_response_url,
        metadata=__ret__.metadata,
        metas=__ret__.metas,
        name_id_format=__ret__.name_id_format,
        ocid=__ret__.ocid,
        partner_name=__ret__.partner_name,
        partner_provider_id=__ret__.partner_provider_id,
        requested_authentication_contexts=__ret__.requested_authentication_contexts,
        require_force_authn=__ret__.require_force_authn,
        requires_encrypted_assertion=__ret__.requires_encrypted_assertion,
        resource_type_schema_version=__ret__.resource_type_schema_version,
        saml_ho_krequired=__ret__.saml_ho_krequired,
        schemas=__ret__.schemas,
        service_instance_identifier=__ret__.service_instance_identifier,
        shown_on_login_page=__ret__.shown_on_login_page,
        signature_hash_algorithm=__ret__.signature_hash_algorithm,
        signing_certificate=__ret__.signing_certificate,
        succinct_id=__ret__.succinct_id,
        tags=__ret__.tags,
        tenancy_ocid=__ret__.tenancy_ocid,
        tenant_provider_id=__ret__.tenant_provider_id,
        type=__ret__.type,
        urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers=__ret__.urnietfparamsscimschemasoracleidcsextensionsocial_identity_providers,
        urnietfparamsscimschemasoracleidcsextensionx509identity_providers=__ret__.urnietfparamsscimschemasoracleidcsextensionx509identity_providers,
        user_mapping_method=__ret__.user_mapping_method,
        user_mapping_store_attribute=__ret__.user_mapping_store_attribute)


@_utilities.lift_output_func(get_domains_identity_provider)
def get_domains_identity_provider_output(attribute_sets: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
                                         attributes: Optional[pulumi.Input[Optional[str]]] = None,
                                         authorization: Optional[pulumi.Input[Optional[str]]] = None,
                                         idcs_endpoint: Optional[pulumi.Input[str]] = None,
                                         identity_provider_id: Optional[pulumi.Input[str]] = None,
                                         resource_type_schema_version: Optional[pulumi.Input[Optional[str]]] = None,
                                         opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDomainsIdentityProviderResult]:
    """
    This data source provides details about a specific Identity Provider resource in Oracle Cloud Infrastructure Identity Domains service.

    Get an Identity Provider

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_identity_provider = oci.Identity.get_domains_identity_provider(idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        identity_provider_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str identity_provider_id: ID of the resource
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    ...
