// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type DnsZonesAAAARecord_Spec struct {
	Name string `json:"name,omitempty"`

	// Properties: The properties of the record set.
	Properties *RecordSetProperties `json:"properties,omitempty"`
}

var _ genruntime.ARMResourceSpec = &DnsZonesAAAARecord_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2018-05-01"
func (record DnsZonesAAAARecord_Spec) GetAPIVersion() string {
	return "2018-05-01"
}

// GetName returns the Name of the resource
func (record *DnsZonesAAAARecord_Spec) GetName() string {
	return record.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.Network/dnsZones/AAAA"
func (record *DnsZonesAAAARecord_Spec) GetType() string {
	return "Microsoft.Network/dnsZones/AAAA"
}

// Represents the properties of the records in the record set.
type RecordSetProperties struct {
	// AAAARecords: The list of AAAA records in the record set.
	AAAARecords []AaaaRecord `json:"AAAARecords,omitempty"`

	// ARecords: The list of A records in the record set.
	ARecords []ARecord `json:"ARecords,omitempty"`

	// CNAMERecord: The CNAME record in the  record set.
	CNAMERecord *CnameRecord `json:"CNAMERecord,omitempty"`

	// CaaRecords: The list of CAA records in the record set.
	CaaRecords []CaaRecord `json:"caaRecords,omitempty"`

	// MXRecords: The list of MX records in the record set.
	MXRecords []MxRecord `json:"MXRecords,omitempty"`

	// Metadata: The metadata attached to the record set.
	Metadata map[string]string `json:"metadata,omitempty"`

	// NSRecords: The list of NS records in the record set.
	NSRecords []NsRecord `json:"NSRecords,omitempty"`

	// PTRRecords: The list of PTR records in the record set.
	PTRRecords []PtrRecord `json:"PTRRecords,omitempty"`

	// SOARecord: The SOA record in the record set.
	SOARecord *SoaRecord `json:"SOARecord,omitempty"`

	// SRVRecords: The list of SRV records in the record set.
	SRVRecords []SrvRecord `json:"SRVRecords,omitempty"`

	// TTL: The TTL (time-to-live) of the records in the record set.
	TTL *int `json:"TTL,omitempty"`

	// TXTRecords: The list of TXT records in the record set.
	TXTRecords []TxtRecord `json:"TXTRecords,omitempty"`

	// TargetResource: A reference to an azure resource from where the dns resource value is taken.
	TargetResource *SubResource `json:"targetResource,omitempty"`
}

// An AAAA record.
type AaaaRecord struct {
	// Ipv6Address: The IPv6 address of this AAAA record.
	Ipv6Address *string `json:"ipv6Address,omitempty"`
}

// An A record.
type ARecord struct {
	// Ipv4Address: The IPv4 address of this A record.
	Ipv4Address *string `json:"ipv4Address,omitempty"`
}

// A CAA record.
type CaaRecord struct {
	// Flags: The flags for this CAA record as an integer between 0 and 255.
	Flags *int `json:"flags,omitempty"`

	// Tag: The tag for this CAA record.
	Tag *string `json:"tag,omitempty"`

	// Value: The value for this CAA record.
	Value *string `json:"value,omitempty"`
}

// A CNAME record.
type CnameRecord struct {
	// Cname: The canonical name for this CNAME record.
	Cname *string `json:"cname,omitempty"`
}

// An MX record.
type MxRecord struct {
	// Exchange: The domain name of the mail host for this MX record.
	Exchange *string `json:"exchange,omitempty"`

	// Preference: The preference value for this MX record.
	Preference *int `json:"preference,omitempty"`
}

// An NS record.
type NsRecord struct {
	// Nsdname: The name server name for this NS record.
	Nsdname *string `json:"nsdname,omitempty"`
}

// A PTR record.
type PtrRecord struct {
	// Ptrdname: The PTR target domain name for this PTR record.
	Ptrdname *string `json:"ptrdname,omitempty"`
}

// An SOA record.
type SoaRecord struct {
	// Email: The email contact for this SOA record.
	Email *string `json:"email,omitempty"`

	// ExpireTime: The expire time for this SOA record.
	ExpireTime *int `json:"expireTime,omitempty"`

	// Host: The domain name of the authoritative name server for this SOA record.
	Host *string `json:"host,omitempty"`

	// MinimumTTL: The minimum value for this SOA record. By convention this is used to determine the negative caching duration.
	MinimumTTL *int `json:"minimumTTL,omitempty"`

	// RefreshTime: The refresh value for this SOA record.
	RefreshTime *int `json:"refreshTime,omitempty"`

	// RetryTime: The retry time for this SOA record.
	RetryTime *int `json:"retryTime,omitempty"`

	// SerialNumber: The serial number for this SOA record.
	SerialNumber *int `json:"serialNumber,omitempty"`
}

// An SRV record.
type SrvRecord struct {
	// Port: The port value for this SRV record.
	Port *int `json:"port,omitempty"`

	// Priority: The priority value for this SRV record.
	Priority *int `json:"priority,omitempty"`

	// Target: The target domain name for this SRV record.
	Target *string `json:"target,omitempty"`

	// Weight: The weight value for this SRV record.
	Weight *int `json:"weight,omitempty"`
}

// A TXT record.
type TxtRecord struct {
	// Value: The text value of this TXT record.
	Value []string `json:"value,omitempty"`
}
