# 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 json
import warnings
import pulumi
import pulumi.runtime
from typing import Union
from .. import utilities, tables

class User(pulumi.CustomResource):
    admin_roles: pulumi.Output[list]
    """
    Administrator roles assigned to User.
    """
    city: pulumi.Output[str]
    """
    User profile property.
    """
    cost_center: pulumi.Output[str]
    """
    User profile property.
    """
    country_code: pulumi.Output[str]
    """
    User profile property.
    """
    custom_profile_attributes: pulumi.Output[str]
    """
    raw JSON containing all custom profile attributes.
    """
    department: pulumi.Output[str]
    """
    User profile property.
    """
    display_name: pulumi.Output[str]
    """
    User profile property.
    """
    division: pulumi.Output[str]
    """
    User profile property.
    """
    email: pulumi.Output[str]
    """
    User profile property.
    """
    employee_number: pulumi.Output[str]
    """
    User profile property.
    """
    first_name: pulumi.Output[str]
    """
    User's First Name, required by default.
    """
    group_memberships: pulumi.Output[list]
    """
    User profile property.
    """
    honorific_prefix: pulumi.Output[str]
    """
    User profile property.
    """
    honorific_suffix: pulumi.Output[str]
    """
    User profile property.
    """
    last_name: pulumi.Output[str]
    """
    User's Last Name, required by default.
    """
    locale: pulumi.Output[str]
    """
    User profile property.
    """
    login: pulumi.Output[str]
    """
    User profile property.
    """
    manager: pulumi.Output[str]
    """
    User profile property.
    """
    manager_id: pulumi.Output[str]
    """
    User profile property.
    """
    middle_name: pulumi.Output[str]
    """
    User profile property.
    """
    mobile_phone: pulumi.Output[str]
    """
    User profile property.
    """
    nick_name: pulumi.Output[str]
    """
    User profile property.
    """
    organization: pulumi.Output[str]
    """
    User profile property.
    """
    password: pulumi.Output[str]
    """
    User password.
    """
    postal_address: pulumi.Output[str]
    """
    User profile property.
    """
    preferred_language: pulumi.Output[str]
    """
    User profile property.
    """
    primary_phone: pulumi.Output[str]
    """
    User profile property.
    """
    profile_url: pulumi.Output[str]
    """
    User profile property.
    """
    raw_status: pulumi.Output[str]
    """
    The raw status of the User in Okta - (status is mapped)
    """
    recovery_answer: pulumi.Output[str]
    """
    User password recovery answer.
    """
    recovery_question: pulumi.Output[str]
    """
    User password recovery question.
    """
    second_email: pulumi.Output[str]
    """
    User profile property.
    """
    state: pulumi.Output[str]
    """
    User profile property.
    """
    status: pulumi.Output[str]
    """
    User profile property.
    """
    street_address: pulumi.Output[str]
    """
    User profile property.
    """
    timezone: pulumi.Output[str]
    """
    User profile property.
    """
    title: pulumi.Output[str]
    """
    User profile property.
    """
    user_type: pulumi.Output[str]
    """
    User profile property.
    """
    zip_code: pulumi.Output[str]
    """
    User profile property.
    """
    def __init__(__self__, resource_name, opts=None, admin_roles=None, city=None, cost_center=None, country_code=None, custom_profile_attributes=None, department=None, display_name=None, division=None, email=None, employee_number=None, first_name=None, group_memberships=None, honorific_prefix=None, honorific_suffix=None, last_name=None, locale=None, login=None, manager=None, manager_id=None, middle_name=None, mobile_phone=None, nick_name=None, organization=None, password=None, postal_address=None, preferred_language=None, primary_phone=None, profile_url=None, recovery_answer=None, recovery_question=None, second_email=None, state=None, status=None, street_address=None, timezone=None, title=None, user_type=None, zip_code=None, __props__=None, __name__=None, __opts__=None):
        """
        Creates an Okta User.

        This resource allows you to create and configure an Okta User.

        ## Example Usage



        ```python
        import pulumi
        import pulumi_okta as okta

        example = okta.user.User("example",
            description="My custom property name",
            index="customPropertyName",
            master="OKTA",
            scope="SELF",
            title="customPropertyName",
            type="string")
        ```


        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[list] admin_roles: Administrator roles assigned to User.
        :param pulumi.Input[str] city: User profile property.
        :param pulumi.Input[str] cost_center: User profile property.
        :param pulumi.Input[str] country_code: User profile property.
        :param pulumi.Input[str] custom_profile_attributes: raw JSON containing all custom profile attributes.
        :param pulumi.Input[str] department: User profile property.
        :param pulumi.Input[str] display_name: User profile property.
        :param pulumi.Input[str] division: User profile property.
        :param pulumi.Input[str] email: User profile property.
        :param pulumi.Input[str] employee_number: User profile property.
        :param pulumi.Input[str] first_name: User's First Name, required by default.
        :param pulumi.Input[list] group_memberships: User profile property.
        :param pulumi.Input[str] honorific_prefix: User profile property.
        :param pulumi.Input[str] honorific_suffix: User profile property.
        :param pulumi.Input[str] last_name: User's Last Name, required by default.
        :param pulumi.Input[str] locale: User profile property.
        :param pulumi.Input[str] login: User profile property.
        :param pulumi.Input[str] manager: User profile property.
        :param pulumi.Input[str] manager_id: User profile property.
        :param pulumi.Input[str] middle_name: User profile property.
        :param pulumi.Input[str] mobile_phone: User profile property.
        :param pulumi.Input[str] nick_name: User profile property.
        :param pulumi.Input[str] organization: User profile property.
        :param pulumi.Input[str] password: User password.
        :param pulumi.Input[str] postal_address: User profile property.
        :param pulumi.Input[str] preferred_language: User profile property.
        :param pulumi.Input[str] primary_phone: User profile property.
        :param pulumi.Input[str] profile_url: User profile property.
        :param pulumi.Input[str] recovery_answer: User password recovery answer.
        :param pulumi.Input[str] recovery_question: User password recovery question.
        :param pulumi.Input[str] second_email: User profile property.
        :param pulumi.Input[str] state: User profile property.
        :param pulumi.Input[str] status: User profile property.
        :param pulumi.Input[str] street_address: User profile property.
        :param pulumi.Input[str] timezone: User profile property.
        :param pulumi.Input[str] title: User profile property.
        :param pulumi.Input[str] user_type: User profile property.
        :param pulumi.Input[str] zip_code: User profile property.
        """
        if __name__ is not None:
            warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
            resource_name = __name__
        if __opts__ is not None:
            warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
            opts = __opts__
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = utilities.get_version()
        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__ = dict()

            __props__['admin_roles'] = admin_roles
            __props__['city'] = city
            __props__['cost_center'] = cost_center
            __props__['country_code'] = country_code
            __props__['custom_profile_attributes'] = custom_profile_attributes
            __props__['department'] = department
            __props__['display_name'] = display_name
            __props__['division'] = division
            if email is None:
                raise TypeError("Missing required property 'email'")
            __props__['email'] = email
            __props__['employee_number'] = employee_number
            if first_name is None:
                raise TypeError("Missing required property 'first_name'")
            __props__['first_name'] = first_name
            __props__['group_memberships'] = group_memberships
            __props__['honorific_prefix'] = honorific_prefix
            __props__['honorific_suffix'] = honorific_suffix
            if last_name is None:
                raise TypeError("Missing required property 'last_name'")
            __props__['last_name'] = last_name
            __props__['locale'] = locale
            if login is None:
                raise TypeError("Missing required property 'login'")
            __props__['login'] = login
            __props__['manager'] = manager
            __props__['manager_id'] = manager_id
            __props__['middle_name'] = middle_name
            __props__['mobile_phone'] = mobile_phone
            __props__['nick_name'] = nick_name
            __props__['organization'] = organization
            __props__['password'] = password
            __props__['postal_address'] = postal_address
            __props__['preferred_language'] = preferred_language
            __props__['primary_phone'] = primary_phone
            __props__['profile_url'] = profile_url
            __props__['recovery_answer'] = recovery_answer
            __props__['recovery_question'] = recovery_question
            __props__['second_email'] = second_email
            __props__['state'] = state
            __props__['status'] = status
            __props__['street_address'] = street_address
            __props__['timezone'] = timezone
            __props__['title'] = title
            __props__['user_type'] = user_type
            __props__['zip_code'] = zip_code
            __props__['raw_status'] = None
        super(User, __self__).__init__(
            'okta:user/user:User',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name, id, opts=None, admin_roles=None, city=None, cost_center=None, country_code=None, custom_profile_attributes=None, department=None, display_name=None, division=None, email=None, employee_number=None, first_name=None, group_memberships=None, honorific_prefix=None, honorific_suffix=None, last_name=None, locale=None, login=None, manager=None, manager_id=None, middle_name=None, mobile_phone=None, nick_name=None, organization=None, password=None, postal_address=None, preferred_language=None, primary_phone=None, profile_url=None, raw_status=None, recovery_answer=None, recovery_question=None, second_email=None, state=None, status=None, street_address=None, timezone=None, title=None, user_type=None, zip_code=None):
        """
        Get an existing User 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 str id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[list] admin_roles: Administrator roles assigned to User.
        :param pulumi.Input[str] city: User profile property.
        :param pulumi.Input[str] cost_center: User profile property.
        :param pulumi.Input[str] country_code: User profile property.
        :param pulumi.Input[str] custom_profile_attributes: raw JSON containing all custom profile attributes.
        :param pulumi.Input[str] department: User profile property.
        :param pulumi.Input[str] display_name: User profile property.
        :param pulumi.Input[str] division: User profile property.
        :param pulumi.Input[str] email: User profile property.
        :param pulumi.Input[str] employee_number: User profile property.
        :param pulumi.Input[str] first_name: User's First Name, required by default.
        :param pulumi.Input[list] group_memberships: User profile property.
        :param pulumi.Input[str] honorific_prefix: User profile property.
        :param pulumi.Input[str] honorific_suffix: User profile property.
        :param pulumi.Input[str] last_name: User's Last Name, required by default.
        :param pulumi.Input[str] locale: User profile property.
        :param pulumi.Input[str] login: User profile property.
        :param pulumi.Input[str] manager: User profile property.
        :param pulumi.Input[str] manager_id: User profile property.
        :param pulumi.Input[str] middle_name: User profile property.
        :param pulumi.Input[str] mobile_phone: User profile property.
        :param pulumi.Input[str] nick_name: User profile property.
        :param pulumi.Input[str] organization: User profile property.
        :param pulumi.Input[str] password: User password.
        :param pulumi.Input[str] postal_address: User profile property.
        :param pulumi.Input[str] preferred_language: User profile property.
        :param pulumi.Input[str] primary_phone: User profile property.
        :param pulumi.Input[str] profile_url: User profile property.
        :param pulumi.Input[str] raw_status: The raw status of the User in Okta - (status is mapped)
        :param pulumi.Input[str] recovery_answer: User password recovery answer.
        :param pulumi.Input[str] recovery_question: User password recovery question.
        :param pulumi.Input[str] second_email: User profile property.
        :param pulumi.Input[str] state: User profile property.
        :param pulumi.Input[str] status: User profile property.
        :param pulumi.Input[str] street_address: User profile property.
        :param pulumi.Input[str] timezone: User profile property.
        :param pulumi.Input[str] title: User profile property.
        :param pulumi.Input[str] user_type: User profile property.
        :param pulumi.Input[str] zip_code: User profile property.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["admin_roles"] = admin_roles
        __props__["city"] = city
        __props__["cost_center"] = cost_center
        __props__["country_code"] = country_code
        __props__["custom_profile_attributes"] = custom_profile_attributes
        __props__["department"] = department
        __props__["display_name"] = display_name
        __props__["division"] = division
        __props__["email"] = email
        __props__["employee_number"] = employee_number
        __props__["first_name"] = first_name
        __props__["group_memberships"] = group_memberships
        __props__["honorific_prefix"] = honorific_prefix
        __props__["honorific_suffix"] = honorific_suffix
        __props__["last_name"] = last_name
        __props__["locale"] = locale
        __props__["login"] = login
        __props__["manager"] = manager
        __props__["manager_id"] = manager_id
        __props__["middle_name"] = middle_name
        __props__["mobile_phone"] = mobile_phone
        __props__["nick_name"] = nick_name
        __props__["organization"] = organization
        __props__["password"] = password
        __props__["postal_address"] = postal_address
        __props__["preferred_language"] = preferred_language
        __props__["primary_phone"] = primary_phone
        __props__["profile_url"] = profile_url
        __props__["raw_status"] = raw_status
        __props__["recovery_answer"] = recovery_answer
        __props__["recovery_question"] = recovery_question
        __props__["second_email"] = second_email
        __props__["state"] = state
        __props__["status"] = status
        __props__["street_address"] = street_address
        __props__["timezone"] = timezone
        __props__["title"] = title
        __props__["user_type"] = user_type
        __props__["zip_code"] = zip_code
        return User(resource_name, opts=opts, __props__=__props__)
    def translate_output_property(self, prop):
        return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

    def translate_input_property(self, prop):
        return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop

