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

__all__ = [
    'EmailServiceDomainVerificationRecord',
    'EmailServiceDomainVerificationRecordDkim2',
    'EmailServiceDomainVerificationRecordDkim',
    'EmailServiceDomainVerificationRecordDmarc',
    'EmailServiceDomainVerificationRecordDomain',
    'EmailServiceDomainVerificationRecordSpf',
]

@pulumi.output_type
class EmailServiceDomainVerificationRecord(dict):
    def __init__(__self__, *,
                 dkim2s: Optional[Sequence['outputs.EmailServiceDomainVerificationRecordDkim2']] = None,
                 dkims: Optional[Sequence['outputs.EmailServiceDomainVerificationRecordDkim']] = None,
                 dmarcs: Optional[Sequence['outputs.EmailServiceDomainVerificationRecordDmarc']] = None,
                 domains: Optional[Sequence['outputs.EmailServiceDomainVerificationRecordDomain']] = None,
                 spfs: Optional[Sequence['outputs.EmailServiceDomainVerificationRecordSpf']] = None):
        """
        :param Sequence['EmailServiceDomainVerificationRecordDkim2Args'] dkim2s: (Optional) An `dkim2` block as defined below.
        :param Sequence['EmailServiceDomainVerificationRecordDkimArgs'] dkims: (Optional) An `dkim` block as defined below.
        :param Sequence['EmailServiceDomainVerificationRecordDmarcArgs'] dmarcs: (Optional) An `dmarc` block as defined below.
        :param Sequence['EmailServiceDomainVerificationRecordDomainArgs'] domains: (Optional) An `domain` block as defined below.
        :param Sequence['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[Sequence['outputs.EmailServiceDomainVerificationRecordDkim2']]:
        """
        (Optional) An `dkim2` block as defined below.
        """
        return pulumi.get(self, "dkim2s")

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

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

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

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


@pulumi.output_type
class EmailServiceDomainVerificationRecordDkim2(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 ttl: Optional[int] = None,
                 type: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param 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 int ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param str type: Type of the DNS record. Example: TXT
        :param 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[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")

    @property
    @pulumi.getter
    def ttl(self) -> Optional[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")

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

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


@pulumi.output_type
class EmailServiceDomainVerificationRecordDkim(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 ttl: Optional[int] = None,
                 type: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param 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 int ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param str type: Type of the DNS record. Example: TXT
        :param 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[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")

    @property
    @pulumi.getter
    def ttl(self) -> Optional[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")

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

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


@pulumi.output_type
class EmailServiceDomainVerificationRecordDmarc(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 ttl: Optional[int] = None,
                 type: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param 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 int ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param str type: Type of the DNS record. Example: TXT
        :param 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[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")

    @property
    @pulumi.getter
    def ttl(self) -> Optional[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")

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

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


@pulumi.output_type
class EmailServiceDomainVerificationRecordDomain(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 ttl: Optional[int] = None,
                 type: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param 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 int ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param str type: Type of the DNS record. Example: TXT
        :param 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[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")

    @property
    @pulumi.getter
    def ttl(self) -> Optional[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")

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

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


@pulumi.output_type
class EmailServiceDomainVerificationRecordSpf(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 ttl: Optional[int] = None,
                 type: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param 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 int ttl: Represents an expiry time in seconds to represent how long this entry can be cached by the resolver, default = 3600sec.
        :param str type: Type of the DNS record. Example: TXT
        :param 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[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")

    @property
    @pulumi.getter
    def ttl(self) -> Optional[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")

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

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


