# 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
from . import outputs
from ._inputs import *

__all__ = ['AccountArgs', 'Account']

@pulumi.input_type
class AccountArgs:
    def __init__(__self__, *,
                 account_name: pulumi.Input[builtins.str],
                 show_name: pulumi.Input[builtins.str],
                 allow_console: Optional[pulumi.Input[builtins.int]] = None,
                 allow_exit: Optional[pulumi.Input[builtins.int]] = None,
                 delete_uk: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 org_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 secure_contact_info: Optional[pulumi.Input['AccountSecureContactInfoArgs']] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['AccountTagArgs']]]] = None,
                 verification_relation_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        The set of arguments for constructing a Account resource.
        :param pulumi.Input[builtins.str] account_name: 账户名称。5-20个字符。
        :param pulumi.Input[builtins.str] show_name: 显示名称。
        :param pulumi.Input[builtins.int] allow_console: 允许控制台访问，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.int] allow_exit: 允许退出，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.str] delete_uk: 删除标记。
        :param pulumi.Input[builtins.str] description: 描述。
        :param pulumi.Input[builtins.str] org_unit_id: 组织单元ID。传入 0 加入到 root 单元。
        :param pulumi.Input[builtins.str] password: 账户密码。
        :param pulumi.Input['AccountSecureContactInfoArgs'] secure_contact_info: 安全联系信息。
        :param pulumi.Input[builtins.str] verification_relation_id: 被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        pulumi.set(__self__, "account_name", account_name)
        pulumi.set(__self__, "show_name", show_name)
        if allow_console is not None:
            pulumi.set(__self__, "allow_console", allow_console)
        if allow_exit is not None:
            pulumi.set(__self__, "allow_exit", allow_exit)
        if delete_uk is not None:
            pulumi.set(__self__, "delete_uk", delete_uk)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if org_unit_id is not None:
            pulumi.set(__self__, "org_unit_id", org_unit_id)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if secure_contact_info is not None:
            pulumi.set(__self__, "secure_contact_info", secure_contact_info)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if verification_relation_id is not None:
            pulumi.set(__self__, "verification_relation_id", verification_relation_id)

    @property
    @pulumi.getter(name="accountName")
    def account_name(self) -> pulumi.Input[builtins.str]:
        """
        账户名称。5-20个字符。
        """
        return pulumi.get(self, "account_name")

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

    @property
    @pulumi.getter(name="showName")
    def show_name(self) -> pulumi.Input[builtins.str]:
        """
        显示名称。
        """
        return pulumi.get(self, "show_name")

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

    @property
    @pulumi.getter(name="allowConsole")
    def allow_console(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        允许控制台访问，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_console")

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

    @property
    @pulumi.getter(name="allowExit")
    def allow_exit(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        允许退出，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_exit")

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

    @property
    @pulumi.getter(name="deleteUk")
    def delete_uk(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        删除标记。
        """
        return pulumi.get(self, "delete_uk")

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

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

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

    @property
    @pulumi.getter(name="orgUnitId")
    def org_unit_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        组织单元ID。传入 0 加入到 root 单元。
        """
        return pulumi.get(self, "org_unit_id")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        账户密码。
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter(name="secureContactInfo")
    def secure_contact_info(self) -> Optional[pulumi.Input['AccountSecureContactInfoArgs']]:
        """
        安全联系信息。
        """
        return pulumi.get(self, "secure_contact_info")

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

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

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

    @property
    @pulumi.getter(name="verificationRelationId")
    def verification_relation_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        return pulumi.get(self, "verification_relation_id")

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


@pulumi.input_type
class _AccountState:
    def __init__(__self__, *,
                 account_id: Optional[pulumi.Input[builtins.str]] = None,
                 account_name: Optional[pulumi.Input[builtins.str]] = None,
                 allow_console: Optional[pulumi.Input[builtins.int]] = None,
                 allow_exit: Optional[pulumi.Input[builtins.int]] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 delete_uk: Optional[pulumi.Input[builtins.str]] = None,
                 deleted_time: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 iam_role: Optional[pulumi.Input[builtins.str]] = None,
                 is_owner: Optional[pulumi.Input[builtins.int]] = None,
                 join_type: Optional[pulumi.Input[builtins.int]] = None,
                 main_name: Optional[pulumi.Input[builtins.str]] = None,
                 member_account_id: Optional[pulumi.Input[builtins.str]] = None,
                 org_id: Optional[pulumi.Input[builtins.str]] = None,
                 org_type: Optional[pulumi.Input[builtins.int]] = None,
                 org_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 org_unit_name: Optional[pulumi.Input[builtins.str]] = None,
                 org_verification_id: Optional[pulumi.Input[builtins.str]] = None,
                 owner: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 secure_contact_info: Optional[pulumi.Input['AccountSecureContactInfoArgs']] = None,
                 show_name: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['AccountTagArgs']]]] = None,
                 updated_time: Optional[pulumi.Input[builtins.str]] = None,
                 verification_relation_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Account resources.
        :param pulumi.Input[builtins.str] account_id: 火山账号ID。
        :param pulumi.Input[builtins.str] account_name: 账户名称。5-20个字符。
        :param pulumi.Input[builtins.int] allow_console: 允许控制台访问，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.int] allow_exit: 允许退出，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.str] created_time: 创建时间。
        :param pulumi.Input[builtins.str] delete_uk: 删除标记。
        :param pulumi.Input[builtins.str] deleted_time: 删除时间。
        :param pulumi.Input[builtins.str] description: 描述。
        :param pulumi.Input[builtins.str] iam_role: IAM角色名称。
        :param pulumi.Input[builtins.int] is_owner: 是否是管理员，0.非管理员，1.管理员。
        :param pulumi.Input[builtins.int] join_type: 加入类型，1: 创建，2: 邀请。
        :param pulumi.Input[builtins.str] main_name: 主体名称。
        :param pulumi.Input[builtins.str] member_account_id: 组织成员账号ID。
        :param pulumi.Input[builtins.str] org_id: 组织ID。
        :param pulumi.Input[builtins.int] org_type: 组织类型，1.企业组织。
        :param pulumi.Input[builtins.str] org_unit_id: 组织单元ID。传入 0 加入到 root 单元。
        :param pulumi.Input[builtins.str] org_unit_name: 组织单元名称。
        :param pulumi.Input[builtins.str] org_verification_id: 认证主体ID。
        :param pulumi.Input[builtins.str] owner: 管理员ID。
        :param pulumi.Input[builtins.str] password: 账户密码。
        :param pulumi.Input['AccountSecureContactInfoArgs'] secure_contact_info: 安全联系信息。
        :param pulumi.Input[builtins.str] show_name: 显示名称。
        :param pulumi.Input[builtins.str] updated_time: 更新时间。
        :param pulumi.Input[builtins.str] verification_relation_id: 被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        if account_id is not None:
            pulumi.set(__self__, "account_id", account_id)
        if account_name is not None:
            pulumi.set(__self__, "account_name", account_name)
        if allow_console is not None:
            pulumi.set(__self__, "allow_console", allow_console)
        if allow_exit is not None:
            pulumi.set(__self__, "allow_exit", allow_exit)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if delete_uk is not None:
            pulumi.set(__self__, "delete_uk", delete_uk)
        if deleted_time is not None:
            pulumi.set(__self__, "deleted_time", deleted_time)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if iam_role is not None:
            pulumi.set(__self__, "iam_role", iam_role)
        if is_owner is not None:
            pulumi.set(__self__, "is_owner", is_owner)
        if join_type is not None:
            pulumi.set(__self__, "join_type", join_type)
        if main_name is not None:
            pulumi.set(__self__, "main_name", main_name)
        if member_account_id is not None:
            pulumi.set(__self__, "member_account_id", member_account_id)
        if org_id is not None:
            pulumi.set(__self__, "org_id", org_id)
        if org_type is not None:
            pulumi.set(__self__, "org_type", org_type)
        if org_unit_id is not None:
            pulumi.set(__self__, "org_unit_id", org_unit_id)
        if org_unit_name is not None:
            pulumi.set(__self__, "org_unit_name", org_unit_name)
        if org_verification_id is not None:
            pulumi.set(__self__, "org_verification_id", org_verification_id)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if secure_contact_info is not None:
            pulumi.set(__self__, "secure_contact_info", secure_contact_info)
        if show_name is not None:
            pulumi.set(__self__, "show_name", show_name)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if updated_time is not None:
            pulumi.set(__self__, "updated_time", updated_time)
        if verification_relation_id is not None:
            pulumi.set(__self__, "verification_relation_id", verification_relation_id)

    @property
    @pulumi.getter(name="accountId")
    def account_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        火山账号ID。
        """
        return pulumi.get(self, "account_id")

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

    @property
    @pulumi.getter(name="accountName")
    def account_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        账户名称。5-20个字符。
        """
        return pulumi.get(self, "account_name")

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

    @property
    @pulumi.getter(name="allowConsole")
    def allow_console(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        允许控制台访问，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_console")

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

    @property
    @pulumi.getter(name="allowExit")
    def allow_exit(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        允许退出，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_exit")

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

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

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

    @property
    @pulumi.getter(name="deleteUk")
    def delete_uk(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        删除标记。
        """
        return pulumi.get(self, "delete_uk")

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

    @property
    @pulumi.getter(name="deletedTime")
    def deleted_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        删除时间。
        """
        return pulumi.get(self, "deleted_time")

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

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

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

    @property
    @pulumi.getter(name="iamRole")
    def iam_role(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        IAM角色名称。
        """
        return pulumi.get(self, "iam_role")

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

    @property
    @pulumi.getter(name="isOwner")
    def is_owner(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        是否是管理员，0.非管理员，1.管理员。
        """
        return pulumi.get(self, "is_owner")

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

    @property
    @pulumi.getter(name="joinType")
    def join_type(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        加入类型，1: 创建，2: 邀请。
        """
        return pulumi.get(self, "join_type")

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

    @property
    @pulumi.getter(name="mainName")
    def main_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        主体名称。
        """
        return pulumi.get(self, "main_name")

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

    @property
    @pulumi.getter(name="memberAccountId")
    def member_account_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        组织成员账号ID。
        """
        return pulumi.get(self, "member_account_id")

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

    @property
    @pulumi.getter(name="orgId")
    def org_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        组织ID。
        """
        return pulumi.get(self, "org_id")

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

    @property
    @pulumi.getter(name="orgType")
    def org_type(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        组织类型，1.企业组织。
        """
        return pulumi.get(self, "org_type")

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

    @property
    @pulumi.getter(name="orgUnitId")
    def org_unit_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        组织单元ID。传入 0 加入到 root 单元。
        """
        return pulumi.get(self, "org_unit_id")

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

    @property
    @pulumi.getter(name="orgUnitName")
    def org_unit_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        组织单元名称。
        """
        return pulumi.get(self, "org_unit_name")

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

    @property
    @pulumi.getter(name="orgVerificationId")
    def org_verification_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        认证主体ID。
        """
        return pulumi.get(self, "org_verification_id")

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

    @property
    @pulumi.getter
    def owner(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        管理员ID。
        """
        return pulumi.get(self, "owner")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        账户密码。
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter(name="secureContactInfo")
    def secure_contact_info(self) -> Optional[pulumi.Input['AccountSecureContactInfoArgs']]:
        """
        安全联系信息。
        """
        return pulumi.get(self, "secure_contact_info")

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

    @property
    @pulumi.getter(name="showName")
    def show_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        显示名称。
        """
        return pulumi.get(self, "show_name")

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

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

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

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

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

    @property
    @pulumi.getter(name="verificationRelationId")
    def verification_relation_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        return pulumi.get(self, "verification_relation_id")

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


@pulumi.type_token("bytepluscc:organization/account:Account")
class Account(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 account_name: Optional[pulumi.Input[builtins.str]] = None,
                 allow_console: Optional[pulumi.Input[builtins.int]] = None,
                 allow_exit: Optional[pulumi.Input[builtins.int]] = None,
                 delete_uk: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 org_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 secure_contact_info: Optional[pulumi.Input[Union['AccountSecureContactInfoArgs', 'AccountSecureContactInfoArgsDict']]] = None,
                 show_name: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AccountTagArgs', 'AccountTagArgsDict']]]]] = None,
                 verification_relation_id: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        """
        查看和管理您组织内的所有账号。每个账号可以直接放在根节点中，也可以移动到您创建的任意组织节点层级结构中，每个账号只能归属于一个节点。您可以分层树状结构管理您的组织结构以及成员账号。

        ## Import

        ```sh
        $ pulumi import bytepluscc:organization/account:Account example "account_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] account_name: 账户名称。5-20个字符。
        :param pulumi.Input[builtins.int] allow_console: 允许控制台访问，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.int] allow_exit: 允许退出，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.str] delete_uk: 删除标记。
        :param pulumi.Input[builtins.str] description: 描述。
        :param pulumi.Input[builtins.str] org_unit_id: 组织单元ID。传入 0 加入到 root 单元。
        :param pulumi.Input[builtins.str] password: 账户密码。
        :param pulumi.Input[Union['AccountSecureContactInfoArgs', 'AccountSecureContactInfoArgsDict']] secure_contact_info: 安全联系信息。
        :param pulumi.Input[builtins.str] show_name: 显示名称。
        :param pulumi.Input[builtins.str] verification_relation_id: 被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: AccountArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        查看和管理您组织内的所有账号。每个账号可以直接放在根节点中，也可以移动到您创建的任意组织节点层级结构中，每个账号只能归属于一个节点。您可以分层树状结构管理您的组织结构以及成员账号。

        ## Import

        ```sh
        $ pulumi import bytepluscc:organization/account:Account example "account_id"
        ```

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

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 account_name: Optional[pulumi.Input[builtins.str]] = None,
                 allow_console: Optional[pulumi.Input[builtins.int]] = None,
                 allow_exit: Optional[pulumi.Input[builtins.int]] = None,
                 delete_uk: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 org_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 secure_contact_info: Optional[pulumi.Input[Union['AccountSecureContactInfoArgs', 'AccountSecureContactInfoArgsDict']]] = None,
                 show_name: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AccountTagArgs', 'AccountTagArgsDict']]]]] = None,
                 verification_relation_id: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = AccountArgs.__new__(AccountArgs)

            if account_name is None and not opts.urn:
                raise TypeError("Missing required property 'account_name'")
            __props__.__dict__["account_name"] = account_name
            __props__.__dict__["allow_console"] = allow_console
            __props__.__dict__["allow_exit"] = allow_exit
            __props__.__dict__["delete_uk"] = delete_uk
            __props__.__dict__["description"] = description
            __props__.__dict__["org_unit_id"] = org_unit_id
            __props__.__dict__["password"] = password
            __props__.__dict__["secure_contact_info"] = secure_contact_info
            if show_name is None and not opts.urn:
                raise TypeError("Missing required property 'show_name'")
            __props__.__dict__["show_name"] = show_name
            __props__.__dict__["tags"] = tags
            __props__.__dict__["verification_relation_id"] = verification_relation_id
            __props__.__dict__["account_id"] = None
            __props__.__dict__["created_time"] = None
            __props__.__dict__["deleted_time"] = None
            __props__.__dict__["iam_role"] = None
            __props__.__dict__["is_owner"] = None
            __props__.__dict__["join_type"] = None
            __props__.__dict__["main_name"] = None
            __props__.__dict__["member_account_id"] = None
            __props__.__dict__["org_id"] = None
            __props__.__dict__["org_type"] = None
            __props__.__dict__["org_unit_name"] = None
            __props__.__dict__["org_verification_id"] = None
            __props__.__dict__["owner"] = None
            __props__.__dict__["updated_time"] = None
        super(Account, __self__).__init__(
            'bytepluscc:organization/account:Account',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            account_id: Optional[pulumi.Input[builtins.str]] = None,
            account_name: Optional[pulumi.Input[builtins.str]] = None,
            allow_console: Optional[pulumi.Input[builtins.int]] = None,
            allow_exit: Optional[pulumi.Input[builtins.int]] = None,
            created_time: Optional[pulumi.Input[builtins.str]] = None,
            delete_uk: Optional[pulumi.Input[builtins.str]] = None,
            deleted_time: Optional[pulumi.Input[builtins.str]] = None,
            description: Optional[pulumi.Input[builtins.str]] = None,
            iam_role: Optional[pulumi.Input[builtins.str]] = None,
            is_owner: Optional[pulumi.Input[builtins.int]] = None,
            join_type: Optional[pulumi.Input[builtins.int]] = None,
            main_name: Optional[pulumi.Input[builtins.str]] = None,
            member_account_id: Optional[pulumi.Input[builtins.str]] = None,
            org_id: Optional[pulumi.Input[builtins.str]] = None,
            org_type: Optional[pulumi.Input[builtins.int]] = None,
            org_unit_id: Optional[pulumi.Input[builtins.str]] = None,
            org_unit_name: Optional[pulumi.Input[builtins.str]] = None,
            org_verification_id: Optional[pulumi.Input[builtins.str]] = None,
            owner: Optional[pulumi.Input[builtins.str]] = None,
            password: Optional[pulumi.Input[builtins.str]] = None,
            secure_contact_info: Optional[pulumi.Input[Union['AccountSecureContactInfoArgs', 'AccountSecureContactInfoArgsDict']]] = None,
            show_name: Optional[pulumi.Input[builtins.str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AccountTagArgs', 'AccountTagArgsDict']]]]] = None,
            updated_time: Optional[pulumi.Input[builtins.str]] = None,
            verification_relation_id: Optional[pulumi.Input[builtins.str]] = None) -> 'Account':
        """
        Get an existing Account resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] account_id: 火山账号ID。
        :param pulumi.Input[builtins.str] account_name: 账户名称。5-20个字符。
        :param pulumi.Input[builtins.int] allow_console: 允许控制台访问，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.int] allow_exit: 允许退出，1: 允许，2: 不允许。
        :param pulumi.Input[builtins.str] created_time: 创建时间。
        :param pulumi.Input[builtins.str] delete_uk: 删除标记。
        :param pulumi.Input[builtins.str] deleted_time: 删除时间。
        :param pulumi.Input[builtins.str] description: 描述。
        :param pulumi.Input[builtins.str] iam_role: IAM角色名称。
        :param pulumi.Input[builtins.int] is_owner: 是否是管理员，0.非管理员，1.管理员。
        :param pulumi.Input[builtins.int] join_type: 加入类型，1: 创建，2: 邀请。
        :param pulumi.Input[builtins.str] main_name: 主体名称。
        :param pulumi.Input[builtins.str] member_account_id: 组织成员账号ID。
        :param pulumi.Input[builtins.str] org_id: 组织ID。
        :param pulumi.Input[builtins.int] org_type: 组织类型，1.企业组织。
        :param pulumi.Input[builtins.str] org_unit_id: 组织单元ID。传入 0 加入到 root 单元。
        :param pulumi.Input[builtins.str] org_unit_name: 组织单元名称。
        :param pulumi.Input[builtins.str] org_verification_id: 认证主体ID。
        :param pulumi.Input[builtins.str] owner: 管理员ID。
        :param pulumi.Input[builtins.str] password: 账户密码。
        :param pulumi.Input[Union['AccountSecureContactInfoArgs', 'AccountSecureContactInfoArgsDict']] secure_contact_info: 安全联系信息。
        :param pulumi.Input[builtins.str] show_name: 显示名称。
        :param pulumi.Input[builtins.str] updated_time: 更新时间。
        :param pulumi.Input[builtins.str] verification_relation_id: 被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _AccountState.__new__(_AccountState)

        __props__.__dict__["account_id"] = account_id
        __props__.__dict__["account_name"] = account_name
        __props__.__dict__["allow_console"] = allow_console
        __props__.__dict__["allow_exit"] = allow_exit
        __props__.__dict__["created_time"] = created_time
        __props__.__dict__["delete_uk"] = delete_uk
        __props__.__dict__["deleted_time"] = deleted_time
        __props__.__dict__["description"] = description
        __props__.__dict__["iam_role"] = iam_role
        __props__.__dict__["is_owner"] = is_owner
        __props__.__dict__["join_type"] = join_type
        __props__.__dict__["main_name"] = main_name
        __props__.__dict__["member_account_id"] = member_account_id
        __props__.__dict__["org_id"] = org_id
        __props__.__dict__["org_type"] = org_type
        __props__.__dict__["org_unit_id"] = org_unit_id
        __props__.__dict__["org_unit_name"] = org_unit_name
        __props__.__dict__["org_verification_id"] = org_verification_id
        __props__.__dict__["owner"] = owner
        __props__.__dict__["password"] = password
        __props__.__dict__["secure_contact_info"] = secure_contact_info
        __props__.__dict__["show_name"] = show_name
        __props__.__dict__["tags"] = tags
        __props__.__dict__["updated_time"] = updated_time
        __props__.__dict__["verification_relation_id"] = verification_relation_id
        return Account(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accountId")
    def account_id(self) -> pulumi.Output[builtins.str]:
        """
        火山账号ID。
        """
        return pulumi.get(self, "account_id")

    @property
    @pulumi.getter(name="accountName")
    def account_name(self) -> pulumi.Output[builtins.str]:
        """
        账户名称。5-20个字符。
        """
        return pulumi.get(self, "account_name")

    @property
    @pulumi.getter(name="allowConsole")
    def allow_console(self) -> pulumi.Output[builtins.int]:
        """
        允许控制台访问，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_console")

    @property
    @pulumi.getter(name="allowExit")
    def allow_exit(self) -> pulumi.Output[builtins.int]:
        """
        允许退出，1: 允许，2: 不允许。
        """
        return pulumi.get(self, "allow_exit")

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

    @property
    @pulumi.getter(name="deleteUk")
    def delete_uk(self) -> pulumi.Output[builtins.str]:
        """
        删除标记。
        """
        return pulumi.get(self, "delete_uk")

    @property
    @pulumi.getter(name="deletedTime")
    def deleted_time(self) -> pulumi.Output[builtins.str]:
        """
        删除时间。
        """
        return pulumi.get(self, "deleted_time")

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

    @property
    @pulumi.getter(name="iamRole")
    def iam_role(self) -> pulumi.Output[builtins.str]:
        """
        IAM角色名称。
        """
        return pulumi.get(self, "iam_role")

    @property
    @pulumi.getter(name="isOwner")
    def is_owner(self) -> pulumi.Output[builtins.int]:
        """
        是否是管理员，0.非管理员，1.管理员。
        """
        return pulumi.get(self, "is_owner")

    @property
    @pulumi.getter(name="joinType")
    def join_type(self) -> pulumi.Output[builtins.int]:
        """
        加入类型，1: 创建，2: 邀请。
        """
        return pulumi.get(self, "join_type")

    @property
    @pulumi.getter(name="mainName")
    def main_name(self) -> pulumi.Output[builtins.str]:
        """
        主体名称。
        """
        return pulumi.get(self, "main_name")

    @property
    @pulumi.getter(name="memberAccountId")
    def member_account_id(self) -> pulumi.Output[builtins.str]:
        """
        组织成员账号ID。
        """
        return pulumi.get(self, "member_account_id")

    @property
    @pulumi.getter(name="orgId")
    def org_id(self) -> pulumi.Output[builtins.str]:
        """
        组织ID。
        """
        return pulumi.get(self, "org_id")

    @property
    @pulumi.getter(name="orgType")
    def org_type(self) -> pulumi.Output[builtins.int]:
        """
        组织类型，1.企业组织。
        """
        return pulumi.get(self, "org_type")

    @property
    @pulumi.getter(name="orgUnitId")
    def org_unit_id(self) -> pulumi.Output[builtins.str]:
        """
        组织单元ID。传入 0 加入到 root 单元。
        """
        return pulumi.get(self, "org_unit_id")

    @property
    @pulumi.getter(name="orgUnitName")
    def org_unit_name(self) -> pulumi.Output[builtins.str]:
        """
        组织单元名称。
        """
        return pulumi.get(self, "org_unit_name")

    @property
    @pulumi.getter(name="orgVerificationId")
    def org_verification_id(self) -> pulumi.Output[builtins.str]:
        """
        认证主体ID。
        """
        return pulumi.get(self, "org_verification_id")

    @property
    @pulumi.getter
    def owner(self) -> pulumi.Output[builtins.str]:
        """
        管理员ID。
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter
    def password(self) -> pulumi.Output[builtins.str]:
        """
        账户密码。
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter(name="secureContactInfo")
    def secure_contact_info(self) -> pulumi.Output['outputs.AccountSecureContactInfo']:
        """
        安全联系信息。
        """
        return pulumi.get(self, "secure_contact_info")

    @property
    @pulumi.getter(name="showName")
    def show_name(self) -> pulumi.Output[builtins.str]:
        """
        显示名称。
        """
        return pulumi.get(self, "show_name")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.AccountTag']]:
        return pulumi.get(self, "tags")

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

    @property
    @pulumi.getter(name="verificationRelationId")
    def verification_relation_id(self) -> pulumi.Output[builtins.str]:
        """
        被继承认证主体的账号ID，给非管理员认证主体创建账号时需要，账号需已加入企业组织。默认不传，则继承企业组织管理员的认证主体。
        """
        return pulumi.get(self, "verification_relation_id")

