# 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, Callable, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = [
    'AppGroupAssignmentsGroupArgs',
    'AppSignonPolicyRulePlatformIncludeArgs',
    'AppUserSchemaPropertyArrayOneOfArgs',
    'AppUserSchemaPropertyOneOfArgs',
    'DomainDnsRecordArgs',
    'EmailSenderDnsRecordArgs',
    'EventHookHeaderArgs',
    'GroupSchemaPropertyArrayOneOfArgs',
    'GroupSchemaPropertyMasterOverridePriorityArgs',
    'GroupSchemaPropertyOneOfArgs',
    'PolicyRuleProfileEnrollmentProfileAttributeArgs',
    'TemplateSmsTranslationArgs',
    'UserSchemaPropertyArrayOneOfArgs',
    'UserSchemaPropertyMasterOverridePriorityArgs',
    'UserSchemaPropertyOneOfArgs',
]

@pulumi.input_type
class AppGroupAssignmentsGroupArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 profile: pulumi.Input[str],
                 priority: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] id: A group to associate with the application
        :param pulumi.Input[str] profile: JSON document containing [application profile](https://developer.okta.com/docs/reference/api/apps/#profile-object)
        :param pulumi.Input[int] priority: Priority of group assignment
        """
        AppGroupAssignmentsGroupArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            id=id,
            profile=profile,
            priority=priority,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             id: pulumi.Input[str],
             profile: pulumi.Input[str],
             priority: Optional[pulumi.Input[int]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("id", id)
        _setter("profile", profile)
        if priority is not None:
            _setter("priority", priority)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        A group to associate with the application
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def profile(self) -> pulumi.Input[str]:
        """
        JSON document containing [application profile](https://developer.okta.com/docs/reference/api/apps/#profile-object)
        """
        return pulumi.get(self, "profile")

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

    @property
    @pulumi.getter
    def priority(self) -> Optional[pulumi.Input[int]]:
        """
        Priority of group assignment
        """
        return pulumi.get(self, "priority")

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


@pulumi.input_type
class AppSignonPolicyRulePlatformIncludeArgs:
    def __init__(__self__, *,
                 os_expression: Optional[pulumi.Input[str]] = None,
                 os_type: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] os_expression: Only available with OTHER OS type
        """
        AppSignonPolicyRulePlatformIncludeArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            os_expression=os_expression,
            os_type=os_type,
            type=type,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             os_expression: Optional[pulumi.Input[str]] = None,
             os_type: Optional[pulumi.Input[str]] = None,
             type: Optional[pulumi.Input[str]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'osExpression' in kwargs:
            os_expression = kwargs['osExpression']
        if 'osType' in kwargs:
            os_type = kwargs['osType']

        if os_expression is not None:
            _setter("os_expression", os_expression)
        if os_type is not None:
            _setter("os_type", os_type)
        if type is not None:
            _setter("type", type)

    @property
    @pulumi.getter(name="osExpression")
    def os_expression(self) -> Optional[pulumi.Input[str]]:
        """
        Only available with OTHER OS type
        """
        return pulumi.get(self, "os_expression")

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

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

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

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

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


@pulumi.input_type
class AppUserSchemaPropertyArrayOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        AppUserSchemaPropertyArrayOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


@pulumi.input_type
class AppUserSchemaPropertyOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        AppUserSchemaPropertyOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


@pulumi.input_type
class DomainDnsRecordArgs:
    def __init__(__self__, *,
                 expiration: Optional[pulumi.Input[str]] = None,
                 fqdn: Optional[pulumi.Input[str]] = None,
                 record_type: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        DomainDnsRecordArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            expiration=expiration,
            fqdn=fqdn,
            record_type=record_type,
            values=values,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             expiration: Optional[pulumi.Input[str]] = None,
             fqdn: Optional[pulumi.Input[str]] = None,
             record_type: Optional[pulumi.Input[str]] = None,
             values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'recordType' in kwargs:
            record_type = kwargs['recordType']

        if expiration is not None:
            _setter("expiration", expiration)
        if fqdn is not None:
            _setter("fqdn", fqdn)
        if record_type is not None:
            _setter("record_type", record_type)
        if values is not None:
            _setter("values", values)

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

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

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

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

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

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

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

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


@pulumi.input_type
class EmailSenderDnsRecordArgs:
    def __init__(__self__, *,
                 fqdn: Optional[pulumi.Input[str]] = None,
                 record_type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        EmailSenderDnsRecordArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            fqdn=fqdn,
            record_type=record_type,
            value=value,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             fqdn: Optional[pulumi.Input[str]] = None,
             record_type: Optional[pulumi.Input[str]] = None,
             value: Optional[pulumi.Input[str]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'recordType' in kwargs:
            record_type = kwargs['recordType']

        if fqdn is not None:
            _setter("fqdn", fqdn)
        if record_type is not None:
            _setter("record_type", record_type)
        if value is not None:
            _setter("value", value)

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

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

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

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

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

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


@pulumi.input_type
class EventHookHeaderArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        EventHookHeaderArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            key=key,
            value=value,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             key: Optional[pulumi.Input[str]] = None,
             value: Optional[pulumi.Input[str]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        if key is not None:
            _setter("key", key)
        if value is not None:
            _setter("value", value)

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

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

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

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


@pulumi.input_type
class GroupSchemaPropertyArrayOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        GroupSchemaPropertyArrayOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


@pulumi.input_type
class GroupSchemaPropertyMasterOverridePriorityArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str],
                 type: Optional[pulumi.Input[str]] = None):
        GroupSchemaPropertyMasterOverridePriorityArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            value=value,
            type=type,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             value: pulumi.Input[str],
             type: Optional[pulumi.Input[str]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("value", value)
        if type is not None:
            _setter("type", type)

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

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

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

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


@pulumi.input_type
class GroupSchemaPropertyOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        GroupSchemaPropertyOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


@pulumi.input_type
class PolicyRuleProfileEnrollmentProfileAttributeArgs:
    def __init__(__self__, *,
                 label: pulumi.Input[str],
                 name: pulumi.Input[str],
                 required: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] label: A display-friendly label for this property
        :param pulumi.Input[str] name: The name of a User Profile property
        :param pulumi.Input[bool] required: Indicates if this property is required for enrollment
        """
        PolicyRuleProfileEnrollmentProfileAttributeArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            label=label,
            name=name,
            required=required,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             label: pulumi.Input[str],
             name: pulumi.Input[str],
             required: Optional[pulumi.Input[bool]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("label", label)
        _setter("name", name)
        if required is not None:
            _setter("required", required)

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        A display-friendly label for this property
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The name of a User Profile property
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def required(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates if this property is required for enrollment
        """
        return pulumi.get(self, "required")

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


@pulumi.input_type
class TemplateSmsTranslationArgs:
    def __init__(__self__, *,
                 language: pulumi.Input[str],
                 template: pulumi.Input[str]):
        TemplateSmsTranslationArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            language=language,
            template=template,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             language: pulumi.Input[str],
             template: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("language", language)
        _setter("template", template)

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

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

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

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


@pulumi.input_type
class UserSchemaPropertyArrayOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        UserSchemaPropertyArrayOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


@pulumi.input_type
class UserSchemaPropertyMasterOverridePriorityArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str],
                 type: Optional[pulumi.Input[str]] = None):
        UserSchemaPropertyMasterOverridePriorityArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            value=value,
            type=type,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             value: pulumi.Input[str],
             type: Optional[pulumi.Input[str]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("value", value)
        if type is not None:
            _setter("type", type)

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

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

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

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


@pulumi.input_type
class UserSchemaPropertyOneOfArgs:
    def __init__(__self__, *,
                 const: pulumi.Input[str],
                 title: pulumi.Input[str]):
        """
        :param pulumi.Input[str] const: Enum value
        :param pulumi.Input[str] title: Enum title
        """
        UserSchemaPropertyOneOfArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            const=const,
            title=title,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             const: pulumi.Input[str],
             title: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):

        _setter("const", const)
        _setter("title", title)

    @property
    @pulumi.getter
    def const(self) -> pulumi.Input[str]:
        """
        Enum value
        """
        return pulumi.get(self, "const")

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

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        """
        Enum title
        """
        return pulumi.get(self, "title")

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


