# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'BotAssociationLexBotArgs',
    'HoursOfOperationConfigArgs',
    'HoursOfOperationConfigEndTimeArgs',
    'HoursOfOperationConfigStartTimeArgs',
    'QuickConnectQuickConnectConfigArgs',
    'QuickConnectQuickConnectConfigPhoneConfigArgs',
    'QuickConnectQuickConnectConfigQueueConfigArgs',
    'QuickConnectQuickConnectConfigUserConfigArgs',
    'GetBotAssociationLexBotArgs',
]

@pulumi.input_type
class BotAssociationLexBotArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 lex_region: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Amazon Lex (V1) bot.
        :param pulumi.Input[str] lex_region: The Region that the Amazon Lex (V1) bot was created in. Defaults to current region.
        """
        pulumi.set(__self__, "name", name)
        if lex_region is not None:
            pulumi.set(__self__, "lex_region", lex_region)

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

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

    @property
    @pulumi.getter(name="lexRegion")
    def lex_region(self) -> Optional[pulumi.Input[str]]:
        """
        The Region that the Amazon Lex (V1) bot was created in. Defaults to current region.
        """
        return pulumi.get(self, "lex_region")

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


@pulumi.input_type
class HoursOfOperationConfigArgs:
    def __init__(__self__, *,
                 day: pulumi.Input[str],
                 end_time: pulumi.Input['HoursOfOperationConfigEndTimeArgs'],
                 start_time: pulumi.Input['HoursOfOperationConfigStartTimeArgs']):
        """
        :param pulumi.Input[str] day: Specifies the day that the hours of operation applies to.
        :param pulumi.Input['HoursOfOperationConfigEndTimeArgs'] end_time: A end time block specifies the time that your contact center closes. The `end_time` is documented below.
        :param pulumi.Input['HoursOfOperationConfigStartTimeArgs'] start_time: A start time block specifies the time that your contact center opens. The `start_time` is documented below.
        """
        pulumi.set(__self__, "day", day)
        pulumi.set(__self__, "end_time", end_time)
        pulumi.set(__self__, "start_time", start_time)

    @property
    @pulumi.getter
    def day(self) -> pulumi.Input[str]:
        """
        Specifies the day that the hours of operation applies to.
        """
        return pulumi.get(self, "day")

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

    @property
    @pulumi.getter(name="endTime")
    def end_time(self) -> pulumi.Input['HoursOfOperationConfigEndTimeArgs']:
        """
        A end time block specifies the time that your contact center closes. The `end_time` is documented below.
        """
        return pulumi.get(self, "end_time")

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

    @property
    @pulumi.getter(name="startTime")
    def start_time(self) -> pulumi.Input['HoursOfOperationConfigStartTimeArgs']:
        """
        A start time block specifies the time that your contact center opens. The `start_time` is documented below.
        """
        return pulumi.get(self, "start_time")

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


@pulumi.input_type
class HoursOfOperationConfigEndTimeArgs:
    def __init__(__self__, *,
                 hours: pulumi.Input[int],
                 minutes: pulumi.Input[int]):
        """
        :param pulumi.Input[int] hours: Specifies the hour of closing.
        :param pulumi.Input[int] minutes: Specifies the minute of closing.
        """
        pulumi.set(__self__, "hours", hours)
        pulumi.set(__self__, "minutes", minutes)

    @property
    @pulumi.getter
    def hours(self) -> pulumi.Input[int]:
        """
        Specifies the hour of closing.
        """
        return pulumi.get(self, "hours")

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

    @property
    @pulumi.getter
    def minutes(self) -> pulumi.Input[int]:
        """
        Specifies the minute of closing.
        """
        return pulumi.get(self, "minutes")

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


@pulumi.input_type
class HoursOfOperationConfigStartTimeArgs:
    def __init__(__self__, *,
                 hours: pulumi.Input[int],
                 minutes: pulumi.Input[int]):
        """
        :param pulumi.Input[int] hours: Specifies the hour of opening.
        :param pulumi.Input[int] minutes: Specifies the minute of opening.
        """
        pulumi.set(__self__, "hours", hours)
        pulumi.set(__self__, "minutes", minutes)

    @property
    @pulumi.getter
    def hours(self) -> pulumi.Input[int]:
        """
        Specifies the hour of opening.
        """
        return pulumi.get(self, "hours")

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

    @property
    @pulumi.getter
    def minutes(self) -> pulumi.Input[int]:
        """
        Specifies the minute of opening.
        """
        return pulumi.get(self, "minutes")

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


@pulumi.input_type
class QuickConnectQuickConnectConfigArgs:
    def __init__(__self__, *,
                 quick_connect_type: pulumi.Input[str],
                 phone_configs: Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigPhoneConfigArgs']]]] = None,
                 queue_configs: Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigQueueConfigArgs']]]] = None,
                 user_configs: Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigUserConfigArgs']]]] = None):
        """
        :param pulumi.Input[str] quick_connect_type: Specifies the configuration type of the quick connect. valid values are `PHONE_NUMBER`, `QUEUE`, `USER`.
        :param pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigPhoneConfigArgs']]] phone_configs: Specifies the phone configuration of the Quick Connect. This is required only if `quick_connect_type` is `PHONE_NUMBER`. The `phone_config` block is documented below.
        :param pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigQueueConfigArgs']]] queue_configs: Specifies the queue configuration of the Quick Connect. This is required only if `quick_connect_type` is `QUEUE`. The `queue_config` block is documented below.
        :param pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigUserConfigArgs']]] user_configs: Specifies the user configuration of the Quick Connect. This is required only if `quick_connect_type` is `USER`. The `user_config` block is documented below.
        """
        pulumi.set(__self__, "quick_connect_type", quick_connect_type)
        if phone_configs is not None:
            pulumi.set(__self__, "phone_configs", phone_configs)
        if queue_configs is not None:
            pulumi.set(__self__, "queue_configs", queue_configs)
        if user_configs is not None:
            pulumi.set(__self__, "user_configs", user_configs)

    @property
    @pulumi.getter(name="quickConnectType")
    def quick_connect_type(self) -> pulumi.Input[str]:
        """
        Specifies the configuration type of the quick connect. valid values are `PHONE_NUMBER`, `QUEUE`, `USER`.
        """
        return pulumi.get(self, "quick_connect_type")

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

    @property
    @pulumi.getter(name="phoneConfigs")
    def phone_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigPhoneConfigArgs']]]]:
        """
        Specifies the phone configuration of the Quick Connect. This is required only if `quick_connect_type` is `PHONE_NUMBER`. The `phone_config` block is documented below.
        """
        return pulumi.get(self, "phone_configs")

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

    @property
    @pulumi.getter(name="queueConfigs")
    def queue_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigQueueConfigArgs']]]]:
        """
        Specifies the queue configuration of the Quick Connect. This is required only if `quick_connect_type` is `QUEUE`. The `queue_config` block is documented below.
        """
        return pulumi.get(self, "queue_configs")

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

    @property
    @pulumi.getter(name="userConfigs")
    def user_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['QuickConnectQuickConnectConfigUserConfigArgs']]]]:
        """
        Specifies the user configuration of the Quick Connect. This is required only if `quick_connect_type` is `USER`. The `user_config` block is documented below.
        """
        return pulumi.get(self, "user_configs")

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


@pulumi.input_type
class QuickConnectQuickConnectConfigPhoneConfigArgs:
    def __init__(__self__, *,
                 phone_number: pulumi.Input[str]):
        """
        :param pulumi.Input[str] phone_number: Specifies the phone number in in E.164 format.
        """
        pulumi.set(__self__, "phone_number", phone_number)

    @property
    @pulumi.getter(name="phoneNumber")
    def phone_number(self) -> pulumi.Input[str]:
        """
        Specifies the phone number in in E.164 format.
        """
        return pulumi.get(self, "phone_number")

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


@pulumi.input_type
class QuickConnectQuickConnectConfigQueueConfigArgs:
    def __init__(__self__, *,
                 contact_flow_id: pulumi.Input[str],
                 queue_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contact_flow_id: Specifies the identifier of the contact flow.
        :param pulumi.Input[str] queue_id: Specifies the identifier for the queue.
        """
        pulumi.set(__self__, "contact_flow_id", contact_flow_id)
        pulumi.set(__self__, "queue_id", queue_id)

    @property
    @pulumi.getter(name="contactFlowId")
    def contact_flow_id(self) -> pulumi.Input[str]:
        """
        Specifies the identifier of the contact flow.
        """
        return pulumi.get(self, "contact_flow_id")

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

    @property
    @pulumi.getter(name="queueId")
    def queue_id(self) -> pulumi.Input[str]:
        """
        Specifies the identifier for the queue.
        """
        return pulumi.get(self, "queue_id")

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


@pulumi.input_type
class QuickConnectQuickConnectConfigUserConfigArgs:
    def __init__(__self__, *,
                 contact_flow_id: pulumi.Input[str],
                 user_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contact_flow_id: Specifies the identifier of the contact flow.
        :param pulumi.Input[str] user_id: Specifies the identifier for the user.
        """
        pulumi.set(__self__, "contact_flow_id", contact_flow_id)
        pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter(name="contactFlowId")
    def contact_flow_id(self) -> pulumi.Input[str]:
        """
        Specifies the identifier of the contact flow.
        """
        return pulumi.get(self, "contact_flow_id")

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

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> pulumi.Input[str]:
        """
        Specifies the identifier for the user.
        """
        return pulumi.get(self, "user_id")

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


@pulumi.input_type
class GetBotAssociationLexBotArgs:
    def __init__(__self__, *,
                 lex_region: str,
                 name: str):
        """
        :param str lex_region: The Region that the Amazon Lex (V1) bot was created in.
        :param str name: The name of the Amazon Lex (V1) bot.
        """
        pulumi.set(__self__, "lex_region", lex_region)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="lexRegion")
    def lex_region(self) -> str:
        """
        The Region that the Amazon Lex (V1) bot was created in.
        """
        return pulumi.get(self, "lex_region")

    @lex_region.setter
    def lex_region(self, value: str):
        pulumi.set(self, "lex_region", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Amazon Lex (V1) bot.
        """
        return pulumi.get(self, "name")

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


