# 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 builtins
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__ = [
    'GetUserProvisioningResult',
    'AwaitableGetUserProvisioningResult',
    'get_user_provisioning',
    'get_user_provisioning_output',
]

@pulumi.output_type
class GetUserProvisioningResult:
    """
    A collection of values returned by getUserProvisioning.
    """
    def __init__(__self__, created_time=None, deletion_strategy=None, description=None, duplication_strategy=None, duplication_suffix=None, id=None, identity_source_strategy=None, principal_id=None, principal_name=None, principal_type=None, provision_status=None, target_id=None, updated_time=None, user_provisioning_id=None):
        if created_time and not isinstance(created_time, str):
            raise TypeError("Expected argument 'created_time' to be a str")
        pulumi.set(__self__, "created_time", created_time)
        if deletion_strategy and not isinstance(deletion_strategy, str):
            raise TypeError("Expected argument 'deletion_strategy' to be a str")
        pulumi.set(__self__, "deletion_strategy", deletion_strategy)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if duplication_strategy and not isinstance(duplication_strategy, str):
            raise TypeError("Expected argument 'duplication_strategy' to be a str")
        pulumi.set(__self__, "duplication_strategy", duplication_strategy)
        if duplication_suffix and not isinstance(duplication_suffix, str):
            raise TypeError("Expected argument 'duplication_suffix' to be a str")
        pulumi.set(__self__, "duplication_suffix", duplication_suffix)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if identity_source_strategy and not isinstance(identity_source_strategy, str):
            raise TypeError("Expected argument 'identity_source_strategy' to be a str")
        pulumi.set(__self__, "identity_source_strategy", identity_source_strategy)
        if principal_id and not isinstance(principal_id, str):
            raise TypeError("Expected argument 'principal_id' to be a str")
        pulumi.set(__self__, "principal_id", principal_id)
        if principal_name and not isinstance(principal_name, str):
            raise TypeError("Expected argument 'principal_name' to be a str")
        pulumi.set(__self__, "principal_name", principal_name)
        if principal_type and not isinstance(principal_type, str):
            raise TypeError("Expected argument 'principal_type' to be a str")
        pulumi.set(__self__, "principal_type", principal_type)
        if provision_status and not isinstance(provision_status, str):
            raise TypeError("Expected argument 'provision_status' to be a str")
        pulumi.set(__self__, "provision_status", provision_status)
        if target_id and not isinstance(target_id, str):
            raise TypeError("Expected argument 'target_id' to be a str")
        pulumi.set(__self__, "target_id", target_id)
        if updated_time and not isinstance(updated_time, str):
            raise TypeError("Expected argument 'updated_time' to be a str")
        pulumi.set(__self__, "updated_time", updated_time)
        if user_provisioning_id and not isinstance(user_provisioning_id, str):
            raise TypeError("Expected argument 'user_provisioning_id' to be a str")
        pulumi.set(__self__, "user_provisioning_id", user_provisioning_id)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        创建时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="deletionStrategy")
    def deletion_strategy(self) -> builtins.str:
        """
        删除策略。
        """
        return pulumi.get(self, "deletion_strategy")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        任务描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="duplicationStrategy")
    def duplication_strategy(self) -> builtins.str:
        """
        用户名冲突策略。
        """
        return pulumi.get(self, "duplication_strategy")

    @property
    @pulumi.getter(name="duplicationSuffix")
    def duplication_suffix(self) -> builtins.str:
        """
        本次同步IAM用户名称后缀。
        """
        return pulumi.get(self, "duplication_suffix")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        Uniquely identifies the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="identitySourceStrategy")
    def identity_source_strategy(self) -> builtins.str:
        """
        身份源冲突策略。
        """
        return pulumi.get(self, "identity_source_strategy")

    @property
    @pulumi.getter(name="principalId")
    def principal_id(self) -> builtins.str:
        """
        身份id。
        """
        return pulumi.get(self, "principal_id")

    @property
    @pulumi.getter(name="principalName")
    def principal_name(self) -> builtins.str:
        """
        目标名称。
        """
        return pulumi.get(self, "principal_name")

    @property
    @pulumi.getter(name="principalType")
    def principal_type(self) -> builtins.str:
        """
        身份类型。
        """
        return pulumi.get(self, "principal_type")

    @property
    @pulumi.getter(name="provisionStatus")
    def provision_status(self) -> builtins.str:
        """
        授权任务状态。Provisioned 授权成功，Provisioning 正在授权，DeleteProvisioning 授权解除中，DeleteProvisioned 授权解除成功
        """
        return pulumi.get(self, "provision_status")

    @property
    @pulumi.getter(name="targetId")
    def target_id(self) -> builtins.str:
        """
        目标id。
        """
        return pulumi.get(self, "target_id")

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> builtins.str:
        """
        更新时间。
        """
        return pulumi.get(self, "updated_time")

    @property
    @pulumi.getter(name="userProvisioningId")
    def user_provisioning_id(self) -> builtins.str:
        """
        IAM 用户同步任务ID。
        """
        return pulumi.get(self, "user_provisioning_id")


class AwaitableGetUserProvisioningResult(GetUserProvisioningResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetUserProvisioningResult(
            created_time=self.created_time,
            deletion_strategy=self.deletion_strategy,
            description=self.description,
            duplication_strategy=self.duplication_strategy,
            duplication_suffix=self.duplication_suffix,
            id=self.id,
            identity_source_strategy=self.identity_source_strategy,
            principal_id=self.principal_id,
            principal_name=self.principal_name,
            principal_type=self.principal_type,
            provision_status=self.provision_status,
            target_id=self.target_id,
            updated_time=self.updated_time,
            user_provisioning_id=self.user_provisioning_id)


def get_user_provisioning(id: Optional[builtins.str] = None,
                          opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetUserProvisioningResult:
    """
    Data Source schema for Byteplus::CloudIdentity::UserProvisioning


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('bytepluscc:cloudidentity/getUserProvisioning:getUserProvisioning', __args__, opts=opts, typ=GetUserProvisioningResult).value

    return AwaitableGetUserProvisioningResult(
        created_time=pulumi.get(__ret__, 'created_time'),
        deletion_strategy=pulumi.get(__ret__, 'deletion_strategy'),
        description=pulumi.get(__ret__, 'description'),
        duplication_strategy=pulumi.get(__ret__, 'duplication_strategy'),
        duplication_suffix=pulumi.get(__ret__, 'duplication_suffix'),
        id=pulumi.get(__ret__, 'id'),
        identity_source_strategy=pulumi.get(__ret__, 'identity_source_strategy'),
        principal_id=pulumi.get(__ret__, 'principal_id'),
        principal_name=pulumi.get(__ret__, 'principal_name'),
        principal_type=pulumi.get(__ret__, 'principal_type'),
        provision_status=pulumi.get(__ret__, 'provision_status'),
        target_id=pulumi.get(__ret__, 'target_id'),
        updated_time=pulumi.get(__ret__, 'updated_time'),
        user_provisioning_id=pulumi.get(__ret__, 'user_provisioning_id'))
def get_user_provisioning_output(id: Optional[pulumi.Input[builtins.str]] = None,
                                 opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetUserProvisioningResult]:
    """
    Data Source schema for Byteplus::CloudIdentity::UserProvisioning


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('bytepluscc:cloudidentity/getUserProvisioning:getUserProvisioning', __args__, opts=opts, typ=GetUserProvisioningResult)
    return __ret__.apply(lambda __response__: GetUserProvisioningResult(
        created_time=pulumi.get(__response__, 'created_time'),
        deletion_strategy=pulumi.get(__response__, 'deletion_strategy'),
        description=pulumi.get(__response__, 'description'),
        duplication_strategy=pulumi.get(__response__, 'duplication_strategy'),
        duplication_suffix=pulumi.get(__response__, 'duplication_suffix'),
        id=pulumi.get(__response__, 'id'),
        identity_source_strategy=pulumi.get(__response__, 'identity_source_strategy'),
        principal_id=pulumi.get(__response__, 'principal_id'),
        principal_name=pulumi.get(__response__, 'principal_name'),
        principal_type=pulumi.get(__response__, 'principal_type'),
        provision_status=pulumi.get(__response__, 'provision_status'),
        target_id=pulumi.get(__response__, 'target_id'),
        updated_time=pulumi.get(__response__, 'updated_time'),
        user_provisioning_id=pulumi.get(__response__, 'user_provisioning_id')))
