# 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__ = ['DnsRecordArgs', 'DnsRecord']

@pulumi.input_type
class DnsRecordArgs:
    def __init__(__self__, *,
                 recordtype: pulumi.Input[str],
                 ttl: pulumi.Input[int],
                 zone: pulumi.Input[str],
                 active: Optional[pulumi.Input[bool]] = None,
                 algorithm: Optional[pulumi.Input[int]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 digest: Optional[pulumi.Input[str]] = None,
                 digest_type: Optional[pulumi.Input[int]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 expiration: Optional[pulumi.Input[str]] = None,
                 expiry: Optional[pulumi.Input[int]] = None,
                 fingerprint: Optional[pulumi.Input[str]] = None,
                 fingerprint_type: Optional[pulumi.Input[int]] = None,
                 flags: Optional[pulumi.Input[int]] = None,
                 flagsnaptr: Optional[pulumi.Input[str]] = None,
                 hardware: Optional[pulumi.Input[str]] = None,
                 inception: Optional[pulumi.Input[str]] = None,
                 iterations: Optional[pulumi.Input[int]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 keytag: Optional[pulumi.Input[int]] = None,
                 labels: Optional[pulumi.Input[int]] = None,
                 mailbox: Optional[pulumi.Input[str]] = None,
                 match_type: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 name_server: Optional[pulumi.Input[str]] = None,
                 next_hashed_owner_name: Optional[pulumi.Input[str]] = None,
                 nxdomain_ttl: Optional[pulumi.Input[int]] = None,
                 order: Optional[pulumi.Input[int]] = None,
                 original_ttl: Optional[pulumi.Input[int]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 preference: Optional[pulumi.Input[int]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 priority_increment: Optional[pulumi.Input[int]] = None,
                 protocol: Optional[pulumi.Input[int]] = None,
                 refresh: Optional[pulumi.Input[int]] = None,
                 regexp: Optional[pulumi.Input[str]] = None,
                 replacement: Optional[pulumi.Input[str]] = None,
                 retry: Optional[pulumi.Input[int]] = None,
                 salt: Optional[pulumi.Input[str]] = None,
                 selector: Optional[pulumi.Input[int]] = None,
                 service: Optional[pulumi.Input[str]] = None,
                 signature: Optional[pulumi.Input[str]] = None,
                 signer: Optional[pulumi.Input[str]] = None,
                 software: Optional[pulumi.Input[str]] = None,
                 subtype: Optional[pulumi.Input[int]] = None,
                 svc_params: Optional[pulumi.Input[str]] = None,
                 svc_priority: Optional[pulumi.Input[int]] = None,
                 target_name: Optional[pulumi.Input[str]] = None,
                 targets: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 txt: Optional[pulumi.Input[str]] = None,
                 type_bitmaps: Optional[pulumi.Input[str]] = None,
                 type_covered: Optional[pulumi.Input[str]] = None,
                 type_mnemonic: Optional[pulumi.Input[str]] = None,
                 type_value: Optional[pulumi.Input[int]] = None,
                 usage: Optional[pulumi.Input[int]] = None,
                 weight: Optional[pulumi.Input[int]] = None):
        """
        The set of arguments for constructing a DnsRecord resource.
        """
        pulumi.set(__self__, "recordtype", recordtype)
        pulumi.set(__self__, "ttl", ttl)
        pulumi.set(__self__, "zone", zone)
        if active is not None:
            pulumi.set(__self__, "active", active)
        if algorithm is not None:
            pulumi.set(__self__, "algorithm", algorithm)
        if certificate is not None:
            pulumi.set(__self__, "certificate", certificate)
        if digest is not None:
            pulumi.set(__self__, "digest", digest)
        if digest_type is not None:
            pulumi.set(__self__, "digest_type", digest_type)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        if expiration is not None:
            pulumi.set(__self__, "expiration", expiration)
        if expiry is not None:
            pulumi.set(__self__, "expiry", expiry)
        if fingerprint is not None:
            pulumi.set(__self__, "fingerprint", fingerprint)
        if fingerprint_type is not None:
            pulumi.set(__self__, "fingerprint_type", fingerprint_type)
        if flags is not None:
            pulumi.set(__self__, "flags", flags)
        if flagsnaptr is not None:
            pulumi.set(__self__, "flagsnaptr", flagsnaptr)
        if hardware is not None:
            pulumi.set(__self__, "hardware", hardware)
        if inception is not None:
            pulumi.set(__self__, "inception", inception)
        if iterations is not None:
            pulumi.set(__self__, "iterations", iterations)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if keytag is not None:
            pulumi.set(__self__, "keytag", keytag)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if mailbox is not None:
            pulumi.set(__self__, "mailbox", mailbox)
        if match_type is not None:
            pulumi.set(__self__, "match_type", match_type)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if name_server is not None:
            pulumi.set(__self__, "name_server", name_server)
        if next_hashed_owner_name is not None:
            pulumi.set(__self__, "next_hashed_owner_name", next_hashed_owner_name)
        if nxdomain_ttl is not None:
            pulumi.set(__self__, "nxdomain_ttl", nxdomain_ttl)
        if order is not None:
            pulumi.set(__self__, "order", order)
        if original_ttl is not None:
            pulumi.set(__self__, "original_ttl", original_ttl)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if preference is not None:
            pulumi.set(__self__, "preference", preference)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if priority_increment is not None:
            pulumi.set(__self__, "priority_increment", priority_increment)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if refresh is not None:
            pulumi.set(__self__, "refresh", refresh)
        if regexp is not None:
            pulumi.set(__self__, "regexp", regexp)
        if replacement is not None:
            pulumi.set(__self__, "replacement", replacement)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if salt is not None:
            pulumi.set(__self__, "salt", salt)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if service is not None:
            pulumi.set(__self__, "service", service)
        if signature is not None:
            pulumi.set(__self__, "signature", signature)
        if signer is not None:
            pulumi.set(__self__, "signer", signer)
        if software is not None:
            pulumi.set(__self__, "software", software)
        if subtype is not None:
            pulumi.set(__self__, "subtype", subtype)
        if svc_params is not None:
            pulumi.set(__self__, "svc_params", svc_params)
        if svc_priority is not None:
            pulumi.set(__self__, "svc_priority", svc_priority)
        if target_name is not None:
            pulumi.set(__self__, "target_name", target_name)
        if targets is not None:
            pulumi.set(__self__, "targets", targets)
        if txt is not None:
            pulumi.set(__self__, "txt", txt)
        if type_bitmaps is not None:
            pulumi.set(__self__, "type_bitmaps", type_bitmaps)
        if type_covered is not None:
            pulumi.set(__self__, "type_covered", type_covered)
        if type_mnemonic is not None:
            pulumi.set(__self__, "type_mnemonic", type_mnemonic)
        if type_value is not None:
            pulumi.set(__self__, "type_value", type_value)
        if usage is not None:
            pulumi.set(__self__, "usage", usage)
        if weight is not None:
            pulumi.set(__self__, "weight", weight)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="digestType")
    def digest_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "digest_type")

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

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

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

    @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 expiry(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "expiry")

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

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

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

    @property
    @pulumi.getter(name="fingerprintType")
    def fingerprint_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "fingerprint_type")

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

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

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

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

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

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

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

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

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

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

    @iterations.setter
    def iterations(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "iterations", 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 keytag(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "keytag")

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

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

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

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

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

    @property
    @pulumi.getter(name="matchType")
    def match_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "match_type")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="nxdomainTtl")
    def nxdomain_ttl(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "nxdomain_ttl")

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

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

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

    @property
    @pulumi.getter(name="originalTtl")
    def original_ttl(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "original_ttl")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="priorityIncrement")
    def priority_increment(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "priority_increment")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="svcPriority")
    def svc_priority(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "svc_priority")

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="typeValue")
    def type_value(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "type_value")

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

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

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

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

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


@pulumi.input_type
class _DnsRecordState:
    def __init__(__self__, *,
                 active: Optional[pulumi.Input[bool]] = None,
                 algorithm: Optional[pulumi.Input[int]] = None,
                 answer_type: Optional[pulumi.Input[str]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 digest: Optional[pulumi.Input[str]] = None,
                 digest_type: Optional[pulumi.Input[int]] = None,
                 dns_name: Optional[pulumi.Input[str]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 expiration: Optional[pulumi.Input[str]] = None,
                 expiry: Optional[pulumi.Input[int]] = None,
                 fingerprint: Optional[pulumi.Input[str]] = None,
                 fingerprint_type: Optional[pulumi.Input[int]] = None,
                 flags: Optional[pulumi.Input[int]] = None,
                 flagsnaptr: Optional[pulumi.Input[str]] = None,
                 hardware: Optional[pulumi.Input[str]] = None,
                 inception: Optional[pulumi.Input[str]] = None,
                 iterations: Optional[pulumi.Input[int]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 keytag: Optional[pulumi.Input[int]] = None,
                 labels: Optional[pulumi.Input[int]] = None,
                 mailbox: Optional[pulumi.Input[str]] = None,
                 match_type: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 name_server: Optional[pulumi.Input[str]] = None,
                 next_hashed_owner_name: Optional[pulumi.Input[str]] = None,
                 nxdomain_ttl: Optional[pulumi.Input[int]] = None,
                 order: Optional[pulumi.Input[int]] = None,
                 original_ttl: Optional[pulumi.Input[int]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 preference: Optional[pulumi.Input[int]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 priority_increment: Optional[pulumi.Input[int]] = None,
                 protocol: Optional[pulumi.Input[int]] = None,
                 record_sha: Optional[pulumi.Input[str]] = None,
                 recordtype: Optional[pulumi.Input[str]] = None,
                 refresh: Optional[pulumi.Input[int]] = None,
                 regexp: Optional[pulumi.Input[str]] = None,
                 replacement: Optional[pulumi.Input[str]] = None,
                 retry: Optional[pulumi.Input[int]] = None,
                 salt: Optional[pulumi.Input[str]] = None,
                 selector: Optional[pulumi.Input[int]] = None,
                 serial: Optional[pulumi.Input[int]] = None,
                 service: Optional[pulumi.Input[str]] = None,
                 signature: Optional[pulumi.Input[str]] = None,
                 signer: Optional[pulumi.Input[str]] = None,
                 software: Optional[pulumi.Input[str]] = None,
                 subtype: Optional[pulumi.Input[int]] = None,
                 svc_params: Optional[pulumi.Input[str]] = None,
                 svc_priority: Optional[pulumi.Input[int]] = None,
                 target_name: Optional[pulumi.Input[str]] = None,
                 targets: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 txt: Optional[pulumi.Input[str]] = None,
                 type_bitmaps: Optional[pulumi.Input[str]] = None,
                 type_covered: Optional[pulumi.Input[str]] = None,
                 type_mnemonic: Optional[pulumi.Input[str]] = None,
                 type_value: Optional[pulumi.Input[int]] = None,
                 usage: Optional[pulumi.Input[int]] = None,
                 weight: Optional[pulumi.Input[int]] = None,
                 zone: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering DnsRecord resources.
        """
        if active is not None:
            pulumi.set(__self__, "active", active)
        if algorithm is not None:
            pulumi.set(__self__, "algorithm", algorithm)
        if answer_type is not None:
            pulumi.set(__self__, "answer_type", answer_type)
        if certificate is not None:
            pulumi.set(__self__, "certificate", certificate)
        if digest is not None:
            pulumi.set(__self__, "digest", digest)
        if digest_type is not None:
            pulumi.set(__self__, "digest_type", digest_type)
        if dns_name is not None:
            pulumi.set(__self__, "dns_name", dns_name)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        if expiration is not None:
            pulumi.set(__self__, "expiration", expiration)
        if expiry is not None:
            pulumi.set(__self__, "expiry", expiry)
        if fingerprint is not None:
            pulumi.set(__self__, "fingerprint", fingerprint)
        if fingerprint_type is not None:
            pulumi.set(__self__, "fingerprint_type", fingerprint_type)
        if flags is not None:
            pulumi.set(__self__, "flags", flags)
        if flagsnaptr is not None:
            pulumi.set(__self__, "flagsnaptr", flagsnaptr)
        if hardware is not None:
            pulumi.set(__self__, "hardware", hardware)
        if inception is not None:
            pulumi.set(__self__, "inception", inception)
        if iterations is not None:
            pulumi.set(__self__, "iterations", iterations)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if keytag is not None:
            pulumi.set(__self__, "keytag", keytag)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if mailbox is not None:
            pulumi.set(__self__, "mailbox", mailbox)
        if match_type is not None:
            pulumi.set(__self__, "match_type", match_type)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if name_server is not None:
            pulumi.set(__self__, "name_server", name_server)
        if next_hashed_owner_name is not None:
            pulumi.set(__self__, "next_hashed_owner_name", next_hashed_owner_name)
        if nxdomain_ttl is not None:
            pulumi.set(__self__, "nxdomain_ttl", nxdomain_ttl)
        if order is not None:
            pulumi.set(__self__, "order", order)
        if original_ttl is not None:
            pulumi.set(__self__, "original_ttl", original_ttl)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if preference is not None:
            pulumi.set(__self__, "preference", preference)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if priority_increment is not None:
            pulumi.set(__self__, "priority_increment", priority_increment)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if record_sha is not None:
            pulumi.set(__self__, "record_sha", record_sha)
        if recordtype is not None:
            pulumi.set(__self__, "recordtype", recordtype)
        if refresh is not None:
            pulumi.set(__self__, "refresh", refresh)
        if regexp is not None:
            pulumi.set(__self__, "regexp", regexp)
        if replacement is not None:
            pulumi.set(__self__, "replacement", replacement)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if salt is not None:
            pulumi.set(__self__, "salt", salt)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if serial is not None:
            pulumi.set(__self__, "serial", serial)
        if service is not None:
            pulumi.set(__self__, "service", service)
        if signature is not None:
            pulumi.set(__self__, "signature", signature)
        if signer is not None:
            pulumi.set(__self__, "signer", signer)
        if software is not None:
            pulumi.set(__self__, "software", software)
        if subtype is not None:
            pulumi.set(__self__, "subtype", subtype)
        if svc_params is not None:
            pulumi.set(__self__, "svc_params", svc_params)
        if svc_priority is not None:
            pulumi.set(__self__, "svc_priority", svc_priority)
        if target_name is not None:
            pulumi.set(__self__, "target_name", target_name)
        if targets is not None:
            pulumi.set(__self__, "targets", targets)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if txt is not None:
            pulumi.set(__self__, "txt", txt)
        if type_bitmaps is not None:
            pulumi.set(__self__, "type_bitmaps", type_bitmaps)
        if type_covered is not None:
            pulumi.set(__self__, "type_covered", type_covered)
        if type_mnemonic is not None:
            pulumi.set(__self__, "type_mnemonic", type_mnemonic)
        if type_value is not None:
            pulumi.set(__self__, "type_value", type_value)
        if usage is not None:
            pulumi.set(__self__, "usage", usage)
        if weight is not None:
            pulumi.set(__self__, "weight", weight)
        if zone is not None:
            pulumi.set(__self__, "zone", zone)

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="digestType")
    def digest_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "digest_type")

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

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

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

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

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

    @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 expiry(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "expiry")

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

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

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

    @property
    @pulumi.getter(name="fingerprintType")
    def fingerprint_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "fingerprint_type")

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

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

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

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

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

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

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

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

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

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

    @iterations.setter
    def iterations(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "iterations", 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 keytag(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "keytag")

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

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

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

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

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

    @property
    @pulumi.getter(name="matchType")
    def match_type(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "match_type")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="nxdomainTtl")
    def nxdomain_ttl(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "nxdomain_ttl")

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

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

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

    @property
    @pulumi.getter(name="originalTtl")
    def original_ttl(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "original_ttl")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="priorityIncrement")
    def priority_increment(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "priority_increment")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="svcPriority")
    def svc_priority(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "svc_priority")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="typeValue")
    def type_value(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "type_value")

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

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

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

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

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

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

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


class DnsRecord(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 active: Optional[pulumi.Input[bool]] = None,
                 algorithm: Optional[pulumi.Input[int]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 digest: Optional[pulumi.Input[str]] = None,
                 digest_type: Optional[pulumi.Input[int]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 expiration: Optional[pulumi.Input[str]] = None,
                 expiry: Optional[pulumi.Input[int]] = None,
                 fingerprint: Optional[pulumi.Input[str]] = None,
                 fingerprint_type: Optional[pulumi.Input[int]] = None,
                 flags: Optional[pulumi.Input[int]] = None,
                 flagsnaptr: Optional[pulumi.Input[str]] = None,
                 hardware: Optional[pulumi.Input[str]] = None,
                 inception: Optional[pulumi.Input[str]] = None,
                 iterations: Optional[pulumi.Input[int]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 keytag: Optional[pulumi.Input[int]] = None,
                 labels: Optional[pulumi.Input[int]] = None,
                 mailbox: Optional[pulumi.Input[str]] = None,
                 match_type: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 name_server: Optional[pulumi.Input[str]] = None,
                 next_hashed_owner_name: Optional[pulumi.Input[str]] = None,
                 nxdomain_ttl: Optional[pulumi.Input[int]] = None,
                 order: Optional[pulumi.Input[int]] = None,
                 original_ttl: Optional[pulumi.Input[int]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 preference: Optional[pulumi.Input[int]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 priority_increment: Optional[pulumi.Input[int]] = None,
                 protocol: Optional[pulumi.Input[int]] = None,
                 recordtype: Optional[pulumi.Input[str]] = None,
                 refresh: Optional[pulumi.Input[int]] = None,
                 regexp: Optional[pulumi.Input[str]] = None,
                 replacement: Optional[pulumi.Input[str]] = None,
                 retry: Optional[pulumi.Input[int]] = None,
                 salt: Optional[pulumi.Input[str]] = None,
                 selector: Optional[pulumi.Input[int]] = None,
                 service: Optional[pulumi.Input[str]] = None,
                 signature: Optional[pulumi.Input[str]] = None,
                 signer: Optional[pulumi.Input[str]] = None,
                 software: Optional[pulumi.Input[str]] = None,
                 subtype: Optional[pulumi.Input[int]] = None,
                 svc_params: Optional[pulumi.Input[str]] = None,
                 svc_priority: Optional[pulumi.Input[int]] = None,
                 target_name: Optional[pulumi.Input[str]] = None,
                 targets: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 txt: Optional[pulumi.Input[str]] = None,
                 type_bitmaps: Optional[pulumi.Input[str]] = None,
                 type_covered: Optional[pulumi.Input[str]] = None,
                 type_mnemonic: Optional[pulumi.Input[str]] = None,
                 type_value: Optional[pulumi.Input[int]] = None,
                 usage: Optional[pulumi.Input[int]] = None,
                 weight: Optional[pulumi.Input[int]] = None,
                 zone: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        Use the `DnsRecord` resource to configure a DNS record that can integrate with your existing DNS infrastructure.

        ## Example Usage

        Here are examples of an A record and a CNAME record.
        ### An A record example

        ```python
        import pulumi
        import pulumi_akamai as akamai

        origin = akamai.DnsRecord("origin",
            active=True,
            recordtype="A",
            targets=["192.0.2.42"],
            ttl=30,
            zone="origin.org")
        ```
        ### CNAME Record Example

        ```python
        import pulumi
        import pulumi_akamai as akamai

        www = akamai.DnsRecord("www",
            active=True,
            recordtype="CNAME",
            targets="origin.example.org.edgesuite.net",
            ttl=600,
            zone="example.com")
        ```
        ## Argument reference [argument-reference]

        This resource supports these arguments for all record types:

        * `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name.
        * `zone` - (Required) The domain zone, including any nested subdomains.
        * `recordType` - (Required) The DNS record type.
        * `ttl` - (Required) The time to live (TTL) is a 32-bit signed integer for the time the resource record is cached. <br /> A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data.

        ## Additional arguments by record type

        This section lists additional required and optional arguments for specific record types.

        ### A record

        An A record requires this argument:

        * `target` - One or more IPv4 addresses, for example, 192.0.2.0.

        ### AAAA record

        An AAAA record requires this argument:

        * `target` - One or more IPv6 addresses, for example, 2001:0db8::ff00:0042:8329.

        ### AFSDB record

        An AFSDB record requires these arguments:

        * `target` - The domain name of the host having a server for the cell named by the owner name of the resource record.
        * `subtype` - An integer between `0` and `65535` that indicates the type of service provided by the host.

        ### AKAMAICDN record

        An AKAMAICDN record requires this argument:

        * `target` - A DNS name representing the selected edge hostname and domain.

        ### AKAMAITLC record

        No additional arguments are needed for AKAMAITLC records. This resource returns these computed attributes for this record type:

        * `dns_name` - A valid DNS name.
        * `answer_type` - The answer type.

        ### CAA record

        A certificate authority authorization (CAA) record requires this argument:

        * `target` - One or more certificate authority authorizations. Each authorization contains three attributes: flags, property tag, and property value.

        Example:

        ```python
        import pulumi
        ```

        ### CERT record

        A CERT record requires these arguments:

        * `type_value` - A numeric certificate type value.
        * `type_mnemonic` - A mnemonic certificate type value.
        * `keytag` - A value computed for the key embedded in the certificate.
        * `algorithm` - The cryptographic algorithm used to create the signature.
        * `certificate` - Certificate data.

        > **Note:** When entering the certificate type, you can enter `type_value`, `type_mnemonic`, or  both arguments. If you use both, `type_mnemonic` takes precedence.

        ### CNAME record

        A CNAME record requires this argument:

        * ` target  `- A domain name that specifies the canonical or primary name for the owner. The owner name is an alias.

        ### DNSKEY record

        A DNSKEY record requires these arguments:

        * `flags`
        * `protocol` - Set to `3`. If the value isn't `3`, the DNSKEY resource record is treated as invalid during signature verification.
        * `algorithm` - The public key’s cryptographic algorithm. This algorithm determines the format of the public key field.
        * `key` - A Base64 encoded value representing the public key. The format used depends on the `algorithm`.

        ### DS record

        A DS record requires these arguments:

        * `keytag` - The key tag of the DNSKEY record that the DS record refers to, in network byte order.
        * `algorithm` - The algorithm number of the DNSKEY resource record referred to by the DS record.
        * `digest_type` - Identifies the algorithm used to construct the digest.
        * `digest` - A base 16 encoded DS record includes a digest of the DNSKEY record it refers to. The digest is conifgured the canonical form of the DNSKEY record's fully qualified owner name with the DNSKEY RDATA, and then applying the digest algorithm.

        ### HINFO record

        A HINFO record requires these arguments:

        * `hardware` - The type of hardware the host uses. A machine name or CPU type may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start and to end with an uppercase letter.
        * `software` - The type of software the host uses. A system name may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start with an uppercase letter and end with an uppercase letter or a digit.

        ### HTTPS Record

        The following fields are required:

        * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode.
        * `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0.
        * `target_name` - Domain name of the service endpoint.

        ### LOC record

        A LOC record requires this argument:

        * `target` - A geographical location associated with a domain name.

        ### MX record

        An MX record supports these arguments:

        * `target` - (Required) One or more domain names that specify a host willing to act as a mail exchange for the owner name.
        * `priority` - (Optional) The preference value given to this MX record in relation to all other MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. This value is ignored if an embedded priority exists in the target.
        * `priority_increment` - (Optional) An auto priority increment when multiple targets are provided with no embedded priority.

        See Working with MX records in the DNS Getting Started Guide for more information.

        ### NAPTR record

        An NAPTR record requires these arguments:

        * `order` - A 16-bit unsigned integer specifying the order in which the NAPTR records need to be processed to ensure the correct ordering of rules. Low numbers are processed before high numbers. Once a NAPTR is found whose rule matches the target, the client shouldn't consider any NAPTRs with a higher value for order (except as noted below for the flagsnapter field).
        * `preference` - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values are processed. Low numbers are processed before high numbers.
        * `flagsnaptr` - A character string containing flags that control how fields in the record are rewritten and interpreted. Flags are single alphanumeric characters.
        * `service` - Specifies the services available down this rewrite path.
        * `regexp` - A regular expression string containing a substitution expression. This substitution expression is applied to the original client string in order to construct the next domain name to lookup.
        * `replacement` - Depending on the value of the `flags` attribute, the next NAME to query for NAPTR, SRV, or address records. Enter a fully qualified domain name as the value.

        ### NS record

        An NS record requires these arguments:

        * `target` - One or more domain names that specify authoritative hosts for the specified class and domain.

        ### NSEC3 record

        An NSEC3 record requires these arguments:

        * `algorithm` - The cryptographic hash algorithm used to construct the hash-value.
        * `flags` - Eight one-bit flags you can use to indicate different processing. All undefined flags must be zero.
        * `iterations` - The number of additional times the hash function has been performed.
        * `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing. Used to defend against pre-calculated dictionary attacks.
        * `next_hashed_owner_name` - Base 32 encoded. The next hashed owner name in hash order. This value is in binary format. Given the ordered set of all hashed owner names, the Next Hashed Owner Name field contains the hash of an owner name that immediately follows the owner name of the given NSEC3 RR.
        * `type_bitmaps` - The resource record set types that exist at the original owner name of the NSEC3 RR.

        ### NSEC3PARAM record

        An NSEC3PARAM record requires these arguments:

        * `algorithm` - The cryptographic hash algorithm used to construct the hash-value.
        * `flags` - Eight one-bit flags that can be used to indicate different processing. All undefined flags must be zero.
        * `iterations` - The number of additional times the hash function has been performed.
        * `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks.

        ### PTR record

        A PTR record requires this argument:

        * `target` - A domain name that points to some location in the domain name space.

        ### RP record

        An RP record requires these arguments:

        * `mailbox` - A domain name that specifies the mailbox for the responsible person.
        * `txt` - A domain name for which TXT resource records exist.

        ### RRSIG record

        An RRSIG record requires these arguments:

        * `type_covered` - The resource record set type covered by this signature.
        * `algorithm` - Identifies the cryptographic algorithm used to create the signature.
        * `original_ttl` - The TTL of the covered record set as it appears in the authoritative zone.
        * `expiration` - The end point of this signature’s validity. The signature can`t be used for authentication past this point in time.
        * `inception` - The start point of this signature’s validity. The signature can`t be used for authentication prior to this point in time.
        * `keytag` - The Key Tag field contains the key tag value of the DNSKEY RR that validates this signature, in network byte order.
        * `signer` - The owner of the DNSKEY resource record who validates this signature.
        * `signature` - The base 64 encoded cryptographic signature that covers the RRSIG RDATA and covered record set. Format depends on the TSIG algorithm in use.
        * `labels` - The Labels field specifies the number of labels in the original RRSIG RR owner name. The significance of this field is that a validator uses it to determine whether the answer was synthesized from a wildcard. If so, it can be used to determine what owner name was used in generating the signature.

        ### SPF record

        An SPF record requires this argument:

        * `target` - Indicates which hosts are, and are not, authorized to use a domain name for the “HELO” and “MAIL FROM” identities.

        ### SRV record

        An SRV record requires these arguments:

        * `target` - The domain name of the target host.
        * `priority` - A 16-bit integer that specifies the preference given to this resource record among others at the same owner. Lower values are preferred.
        * `weight` - A server selection mechanism that specifies a relative weight for entries with the same priority. Larger weights are given a proportionately higher probability of being selected. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. Domain administrators should use Weight 0 when there isn’t any server selection to do, to make the RR easier to read for humans. In the presence of records containing weights greater than 0, records with weight 0 should have a very small chance of being selected.
        * `port` - The port on this target of this service. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order.

        ### SSHFP record

        An SSHFP record requires these arguments:

        * `algorithm` - Describes the algorithm of the public key. The following values are assigned: `0` is reserved, `1` is for RSA, `2` is for DSS, and `3` is for ECDSA.
        * `fingerprint_type` - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256.
        * `fingerprint` - The base 16 encoded fingerprint as calculated over the public key blob. The message-digest algorithm is presumed to produce an opaque octet string output, which is placed as-is in the RDATA fingerprint field.

        ### SOA record

        An SOA record requires these arguments:

        * `name_server` - The domain name of the name server that was the original or primary source of data for this zone.
        * `email_address` - A domain name that specifies the mailbox of this person responsible for this zone.
        * `serial` - The unsigned version number between 0 and 214748364 of the original copy of the zone.
        * `refresh` - A time interval between 0 and 214748364 before the zone should be refreshed.
        * `retry` - A time interval between 0 and 214748364 that should elapse before a failed refresh should be retried.
        * `expiry` - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative.
        * `nxdomain_ttl` - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone.

        ### SVCB record

        An SVCB record requires these arguments:

        * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode.
        * `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0.
        * `target_name` - Domain name of the service endpoint.

        ### TLSA record

        A TLSA record requires these arguments:

        * `usage` - Specifies the association used to match the certificate presented in the TLS handshake.
        * `selector` - Specifies the part of the TLS certificate presented by the server that is matched against the association data.
        * `match_type` - Specifies how the certificate association is presented.
        * `certificate` - Specifies the certificate association data to be matched.

        ### TXT record

        A TXT record requires this argument:

        * `target` - One or more character strings. TXT resource records hold descriptive text. The semantics of the text depends on the domain where it is found.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: DnsRecordArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Use the `DnsRecord` resource to configure a DNS record that can integrate with your existing DNS infrastructure.

        ## Example Usage

        Here are examples of an A record and a CNAME record.
        ### An A record example

        ```python
        import pulumi
        import pulumi_akamai as akamai

        origin = akamai.DnsRecord("origin",
            active=True,
            recordtype="A",
            targets=["192.0.2.42"],
            ttl=30,
            zone="origin.org")
        ```
        ### CNAME Record Example

        ```python
        import pulumi
        import pulumi_akamai as akamai

        www = akamai.DnsRecord("www",
            active=True,
            recordtype="CNAME",
            targets="origin.example.org.edgesuite.net",
            ttl=600,
            zone="example.com")
        ```
        ## Argument reference [argument-reference]

        This resource supports these arguments for all record types:

        * `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name.
        * `zone` - (Required) The domain zone, including any nested subdomains.
        * `recordType` - (Required) The DNS record type.
        * `ttl` - (Required) The time to live (TTL) is a 32-bit signed integer for the time the resource record is cached. <br /> A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data.

        ## Additional arguments by record type

        This section lists additional required and optional arguments for specific record types.

        ### A record

        An A record requires this argument:

        * `target` - One or more IPv4 addresses, for example, 192.0.2.0.

        ### AAAA record

        An AAAA record requires this argument:

        * `target` - One or more IPv6 addresses, for example, 2001:0db8::ff00:0042:8329.

        ### AFSDB record

        An AFSDB record requires these arguments:

        * `target` - The domain name of the host having a server for the cell named by the owner name of the resource record.
        * `subtype` - An integer between `0` and `65535` that indicates the type of service provided by the host.

        ### AKAMAICDN record

        An AKAMAICDN record requires this argument:

        * `target` - A DNS name representing the selected edge hostname and domain.

        ### AKAMAITLC record

        No additional arguments are needed for AKAMAITLC records. This resource returns these computed attributes for this record type:

        * `dns_name` - A valid DNS name.
        * `answer_type` - The answer type.

        ### CAA record

        A certificate authority authorization (CAA) record requires this argument:

        * `target` - One or more certificate authority authorizations. Each authorization contains three attributes: flags, property tag, and property value.

        Example:

        ```python
        import pulumi
        ```

        ### CERT record

        A CERT record requires these arguments:

        * `type_value` - A numeric certificate type value.
        * `type_mnemonic` - A mnemonic certificate type value.
        * `keytag` - A value computed for the key embedded in the certificate.
        * `algorithm` - The cryptographic algorithm used to create the signature.
        * `certificate` - Certificate data.

        > **Note:** When entering the certificate type, you can enter `type_value`, `type_mnemonic`, or  both arguments. If you use both, `type_mnemonic` takes precedence.

        ### CNAME record

        A CNAME record requires this argument:

        * ` target  `- A domain name that specifies the canonical or primary name for the owner. The owner name is an alias.

        ### DNSKEY record

        A DNSKEY record requires these arguments:

        * `flags`
        * `protocol` - Set to `3`. If the value isn't `3`, the DNSKEY resource record is treated as invalid during signature verification.
        * `algorithm` - The public key’s cryptographic algorithm. This algorithm determines the format of the public key field.
        * `key` - A Base64 encoded value representing the public key. The format used depends on the `algorithm`.

        ### DS record

        A DS record requires these arguments:

        * `keytag` - The key tag of the DNSKEY record that the DS record refers to, in network byte order.
        * `algorithm` - The algorithm number of the DNSKEY resource record referred to by the DS record.
        * `digest_type` - Identifies the algorithm used to construct the digest.
        * `digest` - A base 16 encoded DS record includes a digest of the DNSKEY record it refers to. The digest is conifgured the canonical form of the DNSKEY record's fully qualified owner name with the DNSKEY RDATA, and then applying the digest algorithm.

        ### HINFO record

        A HINFO record requires these arguments:

        * `hardware` - The type of hardware the host uses. A machine name or CPU type may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start and to end with an uppercase letter.
        * `software` - The type of software the host uses. A system name may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start with an uppercase letter and end with an uppercase letter or a digit.

        ### HTTPS Record

        The following fields are required:

        * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode.
        * `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0.
        * `target_name` - Domain name of the service endpoint.

        ### LOC record

        A LOC record requires this argument:

        * `target` - A geographical location associated with a domain name.

        ### MX record

        An MX record supports these arguments:

        * `target` - (Required) One or more domain names that specify a host willing to act as a mail exchange for the owner name.
        * `priority` - (Optional) The preference value given to this MX record in relation to all other MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. This value is ignored if an embedded priority exists in the target.
        * `priority_increment` - (Optional) An auto priority increment when multiple targets are provided with no embedded priority.

        See Working with MX records in the DNS Getting Started Guide for more information.

        ### NAPTR record

        An NAPTR record requires these arguments:

        * `order` - A 16-bit unsigned integer specifying the order in which the NAPTR records need to be processed to ensure the correct ordering of rules. Low numbers are processed before high numbers. Once a NAPTR is found whose rule matches the target, the client shouldn't consider any NAPTRs with a higher value for order (except as noted below for the flagsnapter field).
        * `preference` - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values are processed. Low numbers are processed before high numbers.
        * `flagsnaptr` - A character string containing flags that control how fields in the record are rewritten and interpreted. Flags are single alphanumeric characters.
        * `service` - Specifies the services available down this rewrite path.
        * `regexp` - A regular expression string containing a substitution expression. This substitution expression is applied to the original client string in order to construct the next domain name to lookup.
        * `replacement` - Depending on the value of the `flags` attribute, the next NAME to query for NAPTR, SRV, or address records. Enter a fully qualified domain name as the value.

        ### NS record

        An NS record requires these arguments:

        * `target` - One or more domain names that specify authoritative hosts for the specified class and domain.

        ### NSEC3 record

        An NSEC3 record requires these arguments:

        * `algorithm` - The cryptographic hash algorithm used to construct the hash-value.
        * `flags` - Eight one-bit flags you can use to indicate different processing. All undefined flags must be zero.
        * `iterations` - The number of additional times the hash function has been performed.
        * `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing. Used to defend against pre-calculated dictionary attacks.
        * `next_hashed_owner_name` - Base 32 encoded. The next hashed owner name in hash order. This value is in binary format. Given the ordered set of all hashed owner names, the Next Hashed Owner Name field contains the hash of an owner name that immediately follows the owner name of the given NSEC3 RR.
        * `type_bitmaps` - The resource record set types that exist at the original owner name of the NSEC3 RR.

        ### NSEC3PARAM record

        An NSEC3PARAM record requires these arguments:

        * `algorithm` - The cryptographic hash algorithm used to construct the hash-value.
        * `flags` - Eight one-bit flags that can be used to indicate different processing. All undefined flags must be zero.
        * `iterations` - The number of additional times the hash function has been performed.
        * `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks.

        ### PTR record

        A PTR record requires this argument:

        * `target` - A domain name that points to some location in the domain name space.

        ### RP record

        An RP record requires these arguments:

        * `mailbox` - A domain name that specifies the mailbox for the responsible person.
        * `txt` - A domain name for which TXT resource records exist.

        ### RRSIG record

        An RRSIG record requires these arguments:

        * `type_covered` - The resource record set type covered by this signature.
        * `algorithm` - Identifies the cryptographic algorithm used to create the signature.
        * `original_ttl` - The TTL of the covered record set as it appears in the authoritative zone.
        * `expiration` - The end point of this signature’s validity. The signature can`t be used for authentication past this point in time.
        * `inception` - The start point of this signature’s validity. The signature can`t be used for authentication prior to this point in time.
        * `keytag` - The Key Tag field contains the key tag value of the DNSKEY RR that validates this signature, in network byte order.
        * `signer` - The owner of the DNSKEY resource record who validates this signature.
        * `signature` - The base 64 encoded cryptographic signature that covers the RRSIG RDATA and covered record set. Format depends on the TSIG algorithm in use.
        * `labels` - The Labels field specifies the number of labels in the original RRSIG RR owner name. The significance of this field is that a validator uses it to determine whether the answer was synthesized from a wildcard. If so, it can be used to determine what owner name was used in generating the signature.

        ### SPF record

        An SPF record requires this argument:

        * `target` - Indicates which hosts are, and are not, authorized to use a domain name for the “HELO” and “MAIL FROM” identities.

        ### SRV record

        An SRV record requires these arguments:

        * `target` - The domain name of the target host.
        * `priority` - A 16-bit integer that specifies the preference given to this resource record among others at the same owner. Lower values are preferred.
        * `weight` - A server selection mechanism that specifies a relative weight for entries with the same priority. Larger weights are given a proportionately higher probability of being selected. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. Domain administrators should use Weight 0 when there isn’t any server selection to do, to make the RR easier to read for humans. In the presence of records containing weights greater than 0, records with weight 0 should have a very small chance of being selected.
        * `port` - The port on this target of this service. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order.

        ### SSHFP record

        An SSHFP record requires these arguments:

        * `algorithm` - Describes the algorithm of the public key. The following values are assigned: `0` is reserved, `1` is for RSA, `2` is for DSS, and `3` is for ECDSA.
        * `fingerprint_type` - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256.
        * `fingerprint` - The base 16 encoded fingerprint as calculated over the public key blob. The message-digest algorithm is presumed to produce an opaque octet string output, which is placed as-is in the RDATA fingerprint field.

        ### SOA record

        An SOA record requires these arguments:

        * `name_server` - The domain name of the name server that was the original or primary source of data for this zone.
        * `email_address` - A domain name that specifies the mailbox of this person responsible for this zone.
        * `serial` - The unsigned version number between 0 and 214748364 of the original copy of the zone.
        * `refresh` - A time interval between 0 and 214748364 before the zone should be refreshed.
        * `retry` - A time interval between 0 and 214748364 that should elapse before a failed refresh should be retried.
        * `expiry` - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative.
        * `nxdomain_ttl` - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone.

        ### SVCB record

        An SVCB record requires these arguments:

        * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode.
        * `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0.
        * `target_name` - Domain name of the service endpoint.

        ### TLSA record

        A TLSA record requires these arguments:

        * `usage` - Specifies the association used to match the certificate presented in the TLS handshake.
        * `selector` - Specifies the part of the TLS certificate presented by the server that is matched against the association data.
        * `match_type` - Specifies how the certificate association is presented.
        * `certificate` - Specifies the certificate association data to be matched.

        ### TXT record

        A TXT record requires this argument:

        * `target` - One or more character strings. TXT resource records hold descriptive text. The semantics of the text depends on the domain where it is found.

        :param str resource_name: The name of the resource.
        :param DnsRecordArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(DnsRecordArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 active: Optional[pulumi.Input[bool]] = None,
                 algorithm: Optional[pulumi.Input[int]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 digest: Optional[pulumi.Input[str]] = None,
                 digest_type: Optional[pulumi.Input[int]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 expiration: Optional[pulumi.Input[str]] = None,
                 expiry: Optional[pulumi.Input[int]] = None,
                 fingerprint: Optional[pulumi.Input[str]] = None,
                 fingerprint_type: Optional[pulumi.Input[int]] = None,
                 flags: Optional[pulumi.Input[int]] = None,
                 flagsnaptr: Optional[pulumi.Input[str]] = None,
                 hardware: Optional[pulumi.Input[str]] = None,
                 inception: Optional[pulumi.Input[str]] = None,
                 iterations: Optional[pulumi.Input[int]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 keytag: Optional[pulumi.Input[int]] = None,
                 labels: Optional[pulumi.Input[int]] = None,
                 mailbox: Optional[pulumi.Input[str]] = None,
                 match_type: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 name_server: Optional[pulumi.Input[str]] = None,
                 next_hashed_owner_name: Optional[pulumi.Input[str]] = None,
                 nxdomain_ttl: Optional[pulumi.Input[int]] = None,
                 order: Optional[pulumi.Input[int]] = None,
                 original_ttl: Optional[pulumi.Input[int]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 preference: Optional[pulumi.Input[int]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 priority_increment: Optional[pulumi.Input[int]] = None,
                 protocol: Optional[pulumi.Input[int]] = None,
                 recordtype: Optional[pulumi.Input[str]] = None,
                 refresh: Optional[pulumi.Input[int]] = None,
                 regexp: Optional[pulumi.Input[str]] = None,
                 replacement: Optional[pulumi.Input[str]] = None,
                 retry: Optional[pulumi.Input[int]] = None,
                 salt: Optional[pulumi.Input[str]] = None,
                 selector: Optional[pulumi.Input[int]] = None,
                 service: Optional[pulumi.Input[str]] = None,
                 signature: Optional[pulumi.Input[str]] = None,
                 signer: Optional[pulumi.Input[str]] = None,
                 software: Optional[pulumi.Input[str]] = None,
                 subtype: Optional[pulumi.Input[int]] = None,
                 svc_params: Optional[pulumi.Input[str]] = None,
                 svc_priority: Optional[pulumi.Input[int]] = None,
                 target_name: Optional[pulumi.Input[str]] = None,
                 targets: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ttl: Optional[pulumi.Input[int]] = None,
                 txt: Optional[pulumi.Input[str]] = None,
                 type_bitmaps: Optional[pulumi.Input[str]] = None,
                 type_covered: Optional[pulumi.Input[str]] = None,
                 type_mnemonic: Optional[pulumi.Input[str]] = None,
                 type_value: Optional[pulumi.Input[int]] = None,
                 usage: Optional[pulumi.Input[int]] = None,
                 weight: Optional[pulumi.Input[int]] = None,
                 zone: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        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__ = DnsRecordArgs.__new__(DnsRecordArgs)

            __props__.__dict__["active"] = active
            __props__.__dict__["algorithm"] = algorithm
            __props__.__dict__["certificate"] = certificate
            __props__.__dict__["digest"] = digest
            __props__.__dict__["digest_type"] = digest_type
            __props__.__dict__["email_address"] = email_address
            __props__.__dict__["expiration"] = expiration
            __props__.__dict__["expiry"] = expiry
            __props__.__dict__["fingerprint"] = fingerprint
            __props__.__dict__["fingerprint_type"] = fingerprint_type
            __props__.__dict__["flags"] = flags
            __props__.__dict__["flagsnaptr"] = flagsnaptr
            __props__.__dict__["hardware"] = hardware
            __props__.__dict__["inception"] = inception
            __props__.__dict__["iterations"] = iterations
            __props__.__dict__["key"] = key
            __props__.__dict__["keytag"] = keytag
            __props__.__dict__["labels"] = labels
            __props__.__dict__["mailbox"] = mailbox
            __props__.__dict__["match_type"] = match_type
            __props__.__dict__["name"] = name
            __props__.__dict__["name_server"] = name_server
            __props__.__dict__["next_hashed_owner_name"] = next_hashed_owner_name
            __props__.__dict__["nxdomain_ttl"] = nxdomain_ttl
            __props__.__dict__["order"] = order
            __props__.__dict__["original_ttl"] = original_ttl
            __props__.__dict__["port"] = port
            __props__.__dict__["preference"] = preference
            __props__.__dict__["priority"] = priority
            __props__.__dict__["priority_increment"] = priority_increment
            __props__.__dict__["protocol"] = protocol
            if recordtype is None and not opts.urn:
                raise TypeError("Missing required property 'recordtype'")
            __props__.__dict__["recordtype"] = recordtype
            __props__.__dict__["refresh"] = refresh
            __props__.__dict__["regexp"] = regexp
            __props__.__dict__["replacement"] = replacement
            __props__.__dict__["retry"] = retry
            __props__.__dict__["salt"] = salt
            __props__.__dict__["selector"] = selector
            __props__.__dict__["service"] = service
            __props__.__dict__["signature"] = signature
            __props__.__dict__["signer"] = signer
            __props__.__dict__["software"] = software
            __props__.__dict__["subtype"] = subtype
            __props__.__dict__["svc_params"] = svc_params
            __props__.__dict__["svc_priority"] = svc_priority
            __props__.__dict__["target_name"] = target_name
            __props__.__dict__["targets"] = targets
            if ttl is None and not opts.urn:
                raise TypeError("Missing required property 'ttl'")
            __props__.__dict__["ttl"] = ttl
            __props__.__dict__["txt"] = txt
            __props__.__dict__["type_bitmaps"] = type_bitmaps
            __props__.__dict__["type_covered"] = type_covered
            __props__.__dict__["type_mnemonic"] = type_mnemonic
            __props__.__dict__["type_value"] = type_value
            __props__.__dict__["usage"] = usage
            __props__.__dict__["weight"] = weight
            if zone is None and not opts.urn:
                raise TypeError("Missing required property 'zone'")
            __props__.__dict__["zone"] = zone
            __props__.__dict__["answer_type"] = None
            __props__.__dict__["dns_name"] = None
            __props__.__dict__["record_sha"] = None
            __props__.__dict__["serial"] = None
        alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="akamai:edgedns/dnsRecord:DnsRecord")])
        opts = pulumi.ResourceOptions.merge(opts, alias_opts)
        super(DnsRecord, __self__).__init__(
            'akamai:index/dnsRecord:DnsRecord',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            active: Optional[pulumi.Input[bool]] = None,
            algorithm: Optional[pulumi.Input[int]] = None,
            answer_type: Optional[pulumi.Input[str]] = None,
            certificate: Optional[pulumi.Input[str]] = None,
            digest: Optional[pulumi.Input[str]] = None,
            digest_type: Optional[pulumi.Input[int]] = None,
            dns_name: Optional[pulumi.Input[str]] = None,
            email_address: Optional[pulumi.Input[str]] = None,
            expiration: Optional[pulumi.Input[str]] = None,
            expiry: Optional[pulumi.Input[int]] = None,
            fingerprint: Optional[pulumi.Input[str]] = None,
            fingerprint_type: Optional[pulumi.Input[int]] = None,
            flags: Optional[pulumi.Input[int]] = None,
            flagsnaptr: Optional[pulumi.Input[str]] = None,
            hardware: Optional[pulumi.Input[str]] = None,
            inception: Optional[pulumi.Input[str]] = None,
            iterations: Optional[pulumi.Input[int]] = None,
            key: Optional[pulumi.Input[str]] = None,
            keytag: Optional[pulumi.Input[int]] = None,
            labels: Optional[pulumi.Input[int]] = None,
            mailbox: Optional[pulumi.Input[str]] = None,
            match_type: Optional[pulumi.Input[int]] = None,
            name: Optional[pulumi.Input[str]] = None,
            name_server: Optional[pulumi.Input[str]] = None,
            next_hashed_owner_name: Optional[pulumi.Input[str]] = None,
            nxdomain_ttl: Optional[pulumi.Input[int]] = None,
            order: Optional[pulumi.Input[int]] = None,
            original_ttl: Optional[pulumi.Input[int]] = None,
            port: Optional[pulumi.Input[int]] = None,
            preference: Optional[pulumi.Input[int]] = None,
            priority: Optional[pulumi.Input[int]] = None,
            priority_increment: Optional[pulumi.Input[int]] = None,
            protocol: Optional[pulumi.Input[int]] = None,
            record_sha: Optional[pulumi.Input[str]] = None,
            recordtype: Optional[pulumi.Input[str]] = None,
            refresh: Optional[pulumi.Input[int]] = None,
            regexp: Optional[pulumi.Input[str]] = None,
            replacement: Optional[pulumi.Input[str]] = None,
            retry: Optional[pulumi.Input[int]] = None,
            salt: Optional[pulumi.Input[str]] = None,
            selector: Optional[pulumi.Input[int]] = None,
            serial: Optional[pulumi.Input[int]] = None,
            service: Optional[pulumi.Input[str]] = None,
            signature: Optional[pulumi.Input[str]] = None,
            signer: Optional[pulumi.Input[str]] = None,
            software: Optional[pulumi.Input[str]] = None,
            subtype: Optional[pulumi.Input[int]] = None,
            svc_params: Optional[pulumi.Input[str]] = None,
            svc_priority: Optional[pulumi.Input[int]] = None,
            target_name: Optional[pulumi.Input[str]] = None,
            targets: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            ttl: Optional[pulumi.Input[int]] = None,
            txt: Optional[pulumi.Input[str]] = None,
            type_bitmaps: Optional[pulumi.Input[str]] = None,
            type_covered: Optional[pulumi.Input[str]] = None,
            type_mnemonic: Optional[pulumi.Input[str]] = None,
            type_value: Optional[pulumi.Input[int]] = None,
            usage: Optional[pulumi.Input[int]] = None,
            weight: Optional[pulumi.Input[int]] = None,
            zone: Optional[pulumi.Input[str]] = None) -> 'DnsRecord':
        """
        Get an existing DnsRecord 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 pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _DnsRecordState.__new__(_DnsRecordState)

        __props__.__dict__["active"] = active
        __props__.__dict__["algorithm"] = algorithm
        __props__.__dict__["answer_type"] = answer_type
        __props__.__dict__["certificate"] = certificate
        __props__.__dict__["digest"] = digest
        __props__.__dict__["digest_type"] = digest_type
        __props__.__dict__["dns_name"] = dns_name
        __props__.__dict__["email_address"] = email_address
        __props__.__dict__["expiration"] = expiration
        __props__.__dict__["expiry"] = expiry
        __props__.__dict__["fingerprint"] = fingerprint
        __props__.__dict__["fingerprint_type"] = fingerprint_type
        __props__.__dict__["flags"] = flags
        __props__.__dict__["flagsnaptr"] = flagsnaptr
        __props__.__dict__["hardware"] = hardware
        __props__.__dict__["inception"] = inception
        __props__.__dict__["iterations"] = iterations
        __props__.__dict__["key"] = key
        __props__.__dict__["keytag"] = keytag
        __props__.__dict__["labels"] = labels
        __props__.__dict__["mailbox"] = mailbox
        __props__.__dict__["match_type"] = match_type
        __props__.__dict__["name"] = name
        __props__.__dict__["name_server"] = name_server
        __props__.__dict__["next_hashed_owner_name"] = next_hashed_owner_name
        __props__.__dict__["nxdomain_ttl"] = nxdomain_ttl
        __props__.__dict__["order"] = order
        __props__.__dict__["original_ttl"] = original_ttl
        __props__.__dict__["port"] = port
        __props__.__dict__["preference"] = preference
        __props__.__dict__["priority"] = priority
        __props__.__dict__["priority_increment"] = priority_increment
        __props__.__dict__["protocol"] = protocol
        __props__.__dict__["record_sha"] = record_sha
        __props__.__dict__["recordtype"] = recordtype
        __props__.__dict__["refresh"] = refresh
        __props__.__dict__["regexp"] = regexp
        __props__.__dict__["replacement"] = replacement
        __props__.__dict__["retry"] = retry
        __props__.__dict__["salt"] = salt
        __props__.__dict__["selector"] = selector
        __props__.__dict__["serial"] = serial
        __props__.__dict__["service"] = service
        __props__.__dict__["signature"] = signature
        __props__.__dict__["signer"] = signer
        __props__.__dict__["software"] = software
        __props__.__dict__["subtype"] = subtype
        __props__.__dict__["svc_params"] = svc_params
        __props__.__dict__["svc_priority"] = svc_priority
        __props__.__dict__["target_name"] = target_name
        __props__.__dict__["targets"] = targets
        __props__.__dict__["ttl"] = ttl
        __props__.__dict__["txt"] = txt
        __props__.__dict__["type_bitmaps"] = type_bitmaps
        __props__.__dict__["type_covered"] = type_covered
        __props__.__dict__["type_mnemonic"] = type_mnemonic
        __props__.__dict__["type_value"] = type_value
        __props__.__dict__["usage"] = usage
        __props__.__dict__["weight"] = weight
        __props__.__dict__["zone"] = zone
        return DnsRecord(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def active(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "active")

    @property
    @pulumi.getter
    def algorithm(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "algorithm")

    @property
    @pulumi.getter(name="answerType")
    def answer_type(self) -> pulumi.Output[str]:
        return pulumi.get(self, "answer_type")

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

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

    @property
    @pulumi.getter(name="digestType")
    def digest_type(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "digest_type")

    @property
    @pulumi.getter(name="dnsName")
    def dns_name(self) -> pulumi.Output[str]:
        return pulumi.get(self, "dns_name")

    @property
    @pulumi.getter(name="emailAddress")
    def email_address(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "email_address")

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

    @property
    @pulumi.getter
    def expiry(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "expiry")

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

    @property
    @pulumi.getter(name="fingerprintType")
    def fingerprint_type(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "fingerprint_type")

    @property
    @pulumi.getter
    def flags(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "flags")

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

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

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

    @property
    @pulumi.getter
    def iterations(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "iterations")

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

    @property
    @pulumi.getter
    def keytag(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "keytag")

    @property
    @pulumi.getter
    def labels(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "labels")

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

    @property
    @pulumi.getter(name="matchType")
    def match_type(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "match_type")

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

    @property
    @pulumi.getter(name="nameServer")
    def name_server(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "name_server")

    @property
    @pulumi.getter(name="nextHashedOwnerName")
    def next_hashed_owner_name(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "next_hashed_owner_name")

    @property
    @pulumi.getter(name="nxdomainTtl")
    def nxdomain_ttl(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "nxdomain_ttl")

    @property
    @pulumi.getter
    def order(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "order")

    @property
    @pulumi.getter(name="originalTtl")
    def original_ttl(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "original_ttl")

    @property
    @pulumi.getter
    def port(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def preference(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "preference")

    @property
    @pulumi.getter
    def priority(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter(name="priorityIncrement")
    def priority_increment(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "priority_increment")

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="recordSha")
    def record_sha(self) -> pulumi.Output[str]:
        return pulumi.get(self, "record_sha")

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

    @property
    @pulumi.getter
    def refresh(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "refresh")

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

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

    @property
    @pulumi.getter
    def retry(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "retry")

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

    @property
    @pulumi.getter
    def selector(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def serial(self) -> pulumi.Output[int]:
        return pulumi.get(self, "serial")

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

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

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

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

    @property
    @pulumi.getter
    def subtype(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "subtype")

    @property
    @pulumi.getter(name="svcParams")
    def svc_params(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "svc_params")

    @property
    @pulumi.getter(name="svcPriority")
    def svc_priority(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "svc_priority")

    @property
    @pulumi.getter(name="targetName")
    def target_name(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "target_name")

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

    @property
    @pulumi.getter
    def ttl(self) -> pulumi.Output[int]:
        return pulumi.get(self, "ttl")

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

    @property
    @pulumi.getter(name="typeBitmaps")
    def type_bitmaps(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "type_bitmaps")

    @property
    @pulumi.getter(name="typeCovered")
    def type_covered(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "type_covered")

    @property
    @pulumi.getter(name="typeMnemonic")
    def type_mnemonic(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "type_mnemonic")

    @property
    @pulumi.getter(name="typeValue")
    def type_value(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "type_value")

    @property
    @pulumi.getter
    def usage(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "usage")

    @property
    @pulumi.getter
    def weight(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "weight")

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

