# 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 sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'EmailServiceDomainVerificationRecordArgs',
    'EmailServiceDomainVerificationRecordArgsDict',
    'EmailServiceDomainVerificationRecordDkim2Args',
    'EmailServiceDomainVerificationRecordDkim2ArgsDict',
    'EmailServiceDomainVerificationRecordDkimArgs',
    'EmailServiceDomainVerificationRecordDkimArgsDict',
    'EmailServiceDomainVerificationRecordDmarcArgs',
    'EmailServiceDomainVerificationRecordDmarcArgsDict',
    'EmailServiceDomainVerificationRecordDomainArgs',
    'EmailServiceDomainVerificationRecordDomainArgsDict',
    'EmailServiceDomainVerificationRecordSpfArgs',
    'EmailServiceDomainVerificationRecordSpfArgsDict',
]

MYPY = False

if not MYPY:
    class EmailServiceDomainVerificationRecordArgsDict(TypedDict):
        dkim2s: NotRequired[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkim2ArgsDict']]]]
        """
        (Optional) An `dkim2` block as defined below.
        """
        dkims: NotRequired[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkimArgsDict']]]]
        """
        (Optional) An `dkim` block as defined below.
        """
        dmarcs: NotRequired[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDmarcArgsDict']]]]
        """
        (Optional) An `dmarc` block as defined below.
        """
        domains: NotRequired[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDomainArgsDict']]]]
        """
        (Optional) An `domain` block as defined below.
        """
        spfs: NotRequired[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordSpfArgsDict']]]]
        """
        (Optional) An `spf` block as defined below.
        """
elif False:
    EmailServiceDomainVerificationRecordArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordArgs:
    def __init__(__self__, *,
                 dkim2s: Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkim2Args']]]] = None,
                 dkims: Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkimArgs']]]] = None,
                 dmarcs: Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDmarcArgs']]]] = None,
                 domains: Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDomainArgs']]]] = None,
                 spfs: Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordSpfArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkim2Args']]] dkim2s: (Optional) An `dkim2` block as defined below.
        :param pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkimArgs']]] dkims: (Optional) An `dkim` block as defined below.
        :param pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDmarcArgs']]] dmarcs: (Optional) An `dmarc` block as defined below.
        :param pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDomainArgs']]] domains: (Optional) An `domain` block as defined below.
        :param pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordSpfArgs']]] spfs: (Optional) An `spf` block as defined below.
        """
        if dkim2s is not None:
            pulumi.set(__self__, "dkim2s", dkim2s)
        if dkims is not None:
            pulumi.set(__self__, "dkims", dkims)
        if dmarcs is not None:
            pulumi.set(__self__, "dmarcs", dmarcs)
        if domains is not None:
            pulumi.set(__self__, "domains", domains)
        if spfs is not None:
            pulumi.set(__self__, "spfs", spfs)

    @property
    @pulumi.getter
    def dkim2s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkim2Args']]]]:
        """
        (Optional) An `dkim2` block as defined below.
        """
        return pulumi.get(self, "dkim2s")

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

    @property
    @pulumi.getter
    def dkims(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDkimArgs']]]]:
        """
        (Optional) An `dkim` block as defined below.
        """
        return pulumi.get(self, "dkims")

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

    @property
    @pulumi.getter
    def dmarcs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDmarcArgs']]]]:
        """
        (Optional) An `dmarc` block as defined below.
        """
        return pulumi.get(self, "dmarcs")

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

    @property
    @pulumi.getter
    def domains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordDomainArgs']]]]:
        """
        (Optional) An `domain` block as defined below.
        """
        return pulumi.get(self, "domains")

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

    @property
    @pulumi.getter
    def spfs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EmailServiceDomainVerificationRecordSpfArgs']]]]:
        """
        (Optional) An `spf` block as defined below.
        """
        return pulumi.get(self, "spfs")

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


if not MYPY:
    class EmailServiceDomainVerificationRecordDkim2ArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        ttl: NotRequired[pulumi.Input[int]]
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        type: NotRequired[pulumi.Input[str]]
        """
        Type of the DNS record. Example: TXT
        """
        value: NotRequired[pulumi.Input[str]]
        """
        Value of the DNS record.
        """
elif False:
    EmailServiceDomainVerificationRecordDkim2ArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordDkim2Args:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        :param pulumi.Input[int] ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param pulumi.Input[str] type: Type of the DNS record. Example: TXT
        :param pulumi.Input[str] value: Value of the DNS record.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[int]]:
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type of the DNS record. Example: TXT
        """
        return pulumi.get(self, "type")

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

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

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


if not MYPY:
    class EmailServiceDomainVerificationRecordDkimArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        ttl: NotRequired[pulumi.Input[int]]
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        type: NotRequired[pulumi.Input[str]]
        """
        Type of the DNS record. Example: TXT
        """
        value: NotRequired[pulumi.Input[str]]
        """
        Value of the DNS record.
        """
elif False:
    EmailServiceDomainVerificationRecordDkimArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordDkimArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        :param pulumi.Input[int] ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param pulumi.Input[str] type: Type of the DNS record. Example: TXT
        :param pulumi.Input[str] value: Value of the DNS record.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[int]]:
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type of the DNS record. Example: TXT
        """
        return pulumi.get(self, "type")

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

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

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


if not MYPY:
    class EmailServiceDomainVerificationRecordDmarcArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        ttl: NotRequired[pulumi.Input[int]]
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        type: NotRequired[pulumi.Input[str]]
        """
        Type of the DNS record. Example: TXT
        """
        value: NotRequired[pulumi.Input[str]]
        """
        Value of the DNS record.
        """
elif False:
    EmailServiceDomainVerificationRecordDmarcArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordDmarcArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        :param pulumi.Input[int] ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param pulumi.Input[str] type: Type of the DNS record. Example: TXT
        :param pulumi.Input[str] value: Value of the DNS record.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[int]]:
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type of the DNS record. Example: TXT
        """
        return pulumi.get(self, "type")

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

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

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


if not MYPY:
    class EmailServiceDomainVerificationRecordDomainArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        ttl: NotRequired[pulumi.Input[int]]
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        type: NotRequired[pulumi.Input[str]]
        """
        Type of the DNS record. Example: TXT
        """
        value: NotRequired[pulumi.Input[str]]
        """
        Value of the DNS record.
        """
elif False:
    EmailServiceDomainVerificationRecordDomainArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordDomainArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        :param pulumi.Input[int] ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param pulumi.Input[str] type: Type of the DNS record. Example: TXT
        :param pulumi.Input[str] value: Value of the DNS record.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[int]]:
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type of the DNS record. Example: TXT
        """
        return pulumi.get(self, "type")

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

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

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


if not MYPY:
    class EmailServiceDomainVerificationRecordSpfArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        ttl: NotRequired[pulumi.Input[int]]
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        type: NotRequired[pulumi.Input[str]]
        """
        Type of the DNS record. Example: TXT
        """
        value: NotRequired[pulumi.Input[str]]
        """
        Value of the DNS record.
        """
elif False:
    EmailServiceDomainVerificationRecordSpfArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EmailServiceDomainVerificationRecordSpfArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        :param pulumi.Input[int] ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param pulumi.Input[str] type: Type of the DNS record. Example: TXT
        :param pulumi.Input[str] value: Value of the DNS record.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Email Communication Service resource. If `domain_management` is `AzureManaged`, the name must be `AzureManagedDomain`. Changing this forces a new Email Communication Service to be created.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[int]]:
        """
        Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        """
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type of the DNS record. Example: TXT
        """
        return pulumi.get(self, "type")

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

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

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


