// This file is auto-generated, don't edit it. Thanks.
package client

import (
	"github.com/alibabacloud-go/tea/dara"
)

type iDescribeDomainInfoResponseBody interface {
	dara.Model
	String() string
	GoString() string
	SetAliDomain(v bool) *DescribeDomainInfoResponseBody
	GetAliDomain() *bool
	SetAvailableTtls(v *DescribeDomainInfoResponseBodyAvailableTtls) *DescribeDomainInfoResponseBody
	GetAvailableTtls() *DescribeDomainInfoResponseBodyAvailableTtls
	SetCreateTime(v string) *DescribeDomainInfoResponseBody
	GetCreateTime() *string
	SetDnsServers(v *DescribeDomainInfoResponseBodyDnsServers) *DescribeDomainInfoResponseBody
	GetDnsServers() *DescribeDomainInfoResponseBodyDnsServers
	SetDomainId(v string) *DescribeDomainInfoResponseBody
	GetDomainId() *string
	SetDomainLoggingSwitchStatus(v string) *DescribeDomainInfoResponseBody
	GetDomainLoggingSwitchStatus() *string
	SetDomainName(v string) *DescribeDomainInfoResponseBody
	GetDomainName() *string
	SetGroupId(v string) *DescribeDomainInfoResponseBody
	GetGroupId() *string
	SetGroupName(v string) *DescribeDomainInfoResponseBody
	GetGroupName() *string
	SetInBlackHole(v bool) *DescribeDomainInfoResponseBody
	GetInBlackHole() *bool
	SetInClean(v bool) *DescribeDomainInfoResponseBody
	GetInClean() *bool
	SetInstanceId(v string) *DescribeDomainInfoResponseBody
	GetInstanceId() *string
	SetLineType(v string) *DescribeDomainInfoResponseBody
	GetLineType() *string
	SetMinTtl(v int64) *DescribeDomainInfoResponseBody
	GetMinTtl() *int64
	SetPunyCode(v string) *DescribeDomainInfoResponseBody
	GetPunyCode() *string
	SetRecordLineTreeJson(v string) *DescribeDomainInfoResponseBody
	GetRecordLineTreeJson() *string
	SetRecordLines(v *DescribeDomainInfoResponseBodyRecordLines) *DescribeDomainInfoResponseBody
	GetRecordLines() *DescribeDomainInfoResponseBodyRecordLines
	SetRegionLines(v bool) *DescribeDomainInfoResponseBody
	GetRegionLines() *bool
	SetRemark(v string) *DescribeDomainInfoResponseBody
	GetRemark() *string
	SetRequestId(v string) *DescribeDomainInfoResponseBody
	GetRequestId() *string
	SetResourceGroupId(v string) *DescribeDomainInfoResponseBody
	GetResourceGroupId() *string
	SetSlaveDns(v bool) *DescribeDomainInfoResponseBody
	GetSlaveDns() *bool
	SetSubDomain(v bool) *DescribeDomainInfoResponseBody
	GetSubDomain() *bool
	SetVersionCode(v string) *DescribeDomainInfoResponseBody
	GetVersionCode() *string
	SetVersionName(v string) *DescribeDomainInfoResponseBody
	GetVersionName() *string
}

type DescribeDomainInfoResponseBody struct {
	// Indicates whether the domain name was registered with Alibaba Cloud.
	//
	// example:
	//
	// true
	AliDomain     *bool                                        `json:"AliDomain,omitempty" xml:"AliDomain,omitempty"`
	AvailableTtls *DescribeDomainInfoResponseBodyAvailableTtls `json:"AvailableTtls,omitempty" xml:"AvailableTtls,omitempty" type:"Struct"`
	// The time when the domain name was created.
	//
	// example:
	//
	// 2015-12-12T09:23Z
	CreateTime *string                                   `json:"CreateTime,omitempty" xml:"CreateTime,omitempty"`
	DnsServers *DescribeDomainInfoResponseBodyDnsServers `json:"DnsServers,omitempty" xml:"DnsServers,omitempty" type:"Struct"`
	// The ID of the domain name.
	//
	// example:
	//
	// 00efd71a-7************
	DomainId *string `json:"DomainId,omitempty" xml:"DomainId,omitempty"`
	// The status of the logging feature.
	//
	// example:
	//
	// CLOSE：关闭状态
	//
	// OPEN：开启状态
	DomainLoggingSwitchStatus *string `json:"DomainLoggingSwitchStatus,omitempty" xml:"DomainLoggingSwitchStatus,omitempty"`
	// The domain name.
	//
	// example:
	//
	// example.com
	DomainName *string `json:"DomainName,omitempty" xml:"DomainName,omitempty"`
	// The ID of the domain name group.
	//
	// example:
	//
	// 2***
	GroupId *string `json:"GroupId,omitempty" xml:"GroupId,omitempty"`
	// The name of the domain name group.
	//
	// example:
	//
	// mygroup
	GroupName *string `json:"GroupName,omitempty" xml:"GroupName,omitempty"`
	// Indicates whether blackhole filtering is activated for the domain name.
	//
	// example:
	//
	// false
	InBlackHole *bool `json:"InBlackHole,omitempty" xml:"InBlackHole,omitempty"`
	// Indicates whether the domain name is being scrubbed.
	//
	// example:
	//
	// false
	InClean *bool `json:"InClean,omitempty" xml:"InClean,omitempty"`
	// The ID of the Alibaba Cloud DNS instance.
	//
	// example:
	//
	// i-7**
	InstanceId *string `json:"InstanceId,omitempty" xml:"InstanceId,omitempty"`
	// The type of the DNS request source line.
	//
	// example:
	//
	// region_province
	LineType *string `json:"LineType,omitempty" xml:"LineType,omitempty"`
	// The minimum TTL.
	//
	// example:
	//
	// 1
	MinTtl *int64 `json:"MinTtl,omitempty" xml:"MinTtl,omitempty"`
	// The Punycode for the Chinese domain name.
	//
	// example:
	//
	// example.com
	PunyCode *string `json:"PunyCode,omitempty" xml:"PunyCode,omitempty"`
	// The list of DNS request source lines in a tree structure.
	//
	// example:
	//
	// {"default":{},"unicom":{},"telecom":{},"mobile":{},"edu":{},"oversea":{},"baidu":{},"biying":{},"google":{}}
	RecordLineTreeJson *string                                    `json:"RecordLineTreeJson,omitempty" xml:"RecordLineTreeJson,omitempty"`
	RecordLines        *DescribeDomainInfoResponseBodyRecordLines `json:"RecordLines,omitempty" xml:"RecordLines,omitempty" type:"Struct"`
	// Indicates whether the line is a regional line.
	//
	// example:
	//
	// false
	RegionLines *bool `json:"RegionLines,omitempty" xml:"RegionLines,omitempty"`
	// The remarks.
	//
	// example:
	//
	// remark
	Remark *string `json:"Remark,omitempty" xml:"Remark,omitempty"`
	// The unique request ID.
	//
	// example:
	//
	// 536E9CAD-DB30-4647-AC87-AA5CC38C5382
	RequestId *string `json:"RequestId,omitempty" xml:"RequestId,omitempty"`
	// The ID of the resource group.
	//
	// example:
	//
	// rg-aek3dj3******
	ResourceGroupId *string `json:"ResourceGroupId,omitempty" xml:"ResourceGroupId,omitempty"`
	// Indicates whether secondary DNS is supported.
	//
	// example:
	//
	// true
	SlaveDns *bool `json:"SlaveDns,omitempty" xml:"SlaveDns,omitempty"`
	// Indicates whether the queried domain is a hosted subdomain. Valid values:
	//
	// - true
	//
	// - false
	//
	// example:
	//
	// false
	SubDomain *bool `json:"SubDomain,omitempty" xml:"SubDomain,omitempty"`
	// The edition ID of Alibaba Cloud DNS. Valid values:
	//
	// - version_enterprise_advanced: Ultimate Edition
	//
	// - version_personal: Personal Edition
	//
	// - mianfei: Free Edition
	//
	// example:
	//
	// mianfei
	VersionCode *string `json:"VersionCode,omitempty" xml:"VersionCode,omitempty"`
	// The name of the Alibaba Cloud DNS edition.
	//
	// example:
	//
	// 企业旗舰版
	VersionName *string `json:"VersionName,omitempty" xml:"VersionName,omitempty"`
}

func (s DescribeDomainInfoResponseBody) String() string {
	return dara.Prettify(s)
}

func (s DescribeDomainInfoResponseBody) GoString() string {
	return s.String()
}

func (s *DescribeDomainInfoResponseBody) GetAliDomain() *bool {
	return s.AliDomain
}

func (s *DescribeDomainInfoResponseBody) GetAvailableTtls() *DescribeDomainInfoResponseBodyAvailableTtls {
	return s.AvailableTtls
}

func (s *DescribeDomainInfoResponseBody) GetCreateTime() *string {
	return s.CreateTime
}

func (s *DescribeDomainInfoResponseBody) GetDnsServers() *DescribeDomainInfoResponseBodyDnsServers {
	return s.DnsServers
}

func (s *DescribeDomainInfoResponseBody) GetDomainId() *string {
	return s.DomainId
}

func (s *DescribeDomainInfoResponseBody) GetDomainLoggingSwitchStatus() *string {
	return s.DomainLoggingSwitchStatus
}

func (s *DescribeDomainInfoResponseBody) GetDomainName() *string {
	return s.DomainName
}

func (s *DescribeDomainInfoResponseBody) GetGroupId() *string {
	return s.GroupId
}

func (s *DescribeDomainInfoResponseBody) GetGroupName() *string {
	return s.GroupName
}

func (s *DescribeDomainInfoResponseBody) GetInBlackHole() *bool {
	return s.InBlackHole
}

func (s *DescribeDomainInfoResponseBody) GetInClean() *bool {
	return s.InClean
}

func (s *DescribeDomainInfoResponseBody) GetInstanceId() *string {
	return s.InstanceId
}

func (s *DescribeDomainInfoResponseBody) GetLineType() *string {
	return s.LineType
}

func (s *DescribeDomainInfoResponseBody) GetMinTtl() *int64 {
	return s.MinTtl
}

func (s *DescribeDomainInfoResponseBody) GetPunyCode() *string {
	return s.PunyCode
}

func (s *DescribeDomainInfoResponseBody) GetRecordLineTreeJson() *string {
	return s.RecordLineTreeJson
}

func (s *DescribeDomainInfoResponseBody) GetRecordLines() *DescribeDomainInfoResponseBodyRecordLines {
	return s.RecordLines
}

func (s *DescribeDomainInfoResponseBody) GetRegionLines() *bool {
	return s.RegionLines
}

func (s *DescribeDomainInfoResponseBody) GetRemark() *string {
	return s.Remark
}

func (s *DescribeDomainInfoResponseBody) GetRequestId() *string {
	return s.RequestId
}

func (s *DescribeDomainInfoResponseBody) GetResourceGroupId() *string {
	return s.ResourceGroupId
}

func (s *DescribeDomainInfoResponseBody) GetSlaveDns() *bool {
	return s.SlaveDns
}

func (s *DescribeDomainInfoResponseBody) GetSubDomain() *bool {
	return s.SubDomain
}

func (s *DescribeDomainInfoResponseBody) GetVersionCode() *string {
	return s.VersionCode
}

func (s *DescribeDomainInfoResponseBody) GetVersionName() *string {
	return s.VersionName
}

func (s *DescribeDomainInfoResponseBody) SetAliDomain(v bool) *DescribeDomainInfoResponseBody {
	s.AliDomain = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetAvailableTtls(v *DescribeDomainInfoResponseBodyAvailableTtls) *DescribeDomainInfoResponseBody {
	s.AvailableTtls = v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetCreateTime(v string) *DescribeDomainInfoResponseBody {
	s.CreateTime = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetDnsServers(v *DescribeDomainInfoResponseBodyDnsServers) *DescribeDomainInfoResponseBody {
	s.DnsServers = v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetDomainId(v string) *DescribeDomainInfoResponseBody {
	s.DomainId = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetDomainLoggingSwitchStatus(v string) *DescribeDomainInfoResponseBody {
	s.DomainLoggingSwitchStatus = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetDomainName(v string) *DescribeDomainInfoResponseBody {
	s.DomainName = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetGroupId(v string) *DescribeDomainInfoResponseBody {
	s.GroupId = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetGroupName(v string) *DescribeDomainInfoResponseBody {
	s.GroupName = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetInBlackHole(v bool) *DescribeDomainInfoResponseBody {
	s.InBlackHole = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetInClean(v bool) *DescribeDomainInfoResponseBody {
	s.InClean = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetInstanceId(v string) *DescribeDomainInfoResponseBody {
	s.InstanceId = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetLineType(v string) *DescribeDomainInfoResponseBody {
	s.LineType = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetMinTtl(v int64) *DescribeDomainInfoResponseBody {
	s.MinTtl = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetPunyCode(v string) *DescribeDomainInfoResponseBody {
	s.PunyCode = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetRecordLineTreeJson(v string) *DescribeDomainInfoResponseBody {
	s.RecordLineTreeJson = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetRecordLines(v *DescribeDomainInfoResponseBodyRecordLines) *DescribeDomainInfoResponseBody {
	s.RecordLines = v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetRegionLines(v bool) *DescribeDomainInfoResponseBody {
	s.RegionLines = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetRemark(v string) *DescribeDomainInfoResponseBody {
	s.Remark = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetRequestId(v string) *DescribeDomainInfoResponseBody {
	s.RequestId = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetResourceGroupId(v string) *DescribeDomainInfoResponseBody {
	s.ResourceGroupId = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetSlaveDns(v bool) *DescribeDomainInfoResponseBody {
	s.SlaveDns = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetSubDomain(v bool) *DescribeDomainInfoResponseBody {
	s.SubDomain = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetVersionCode(v string) *DescribeDomainInfoResponseBody {
	s.VersionCode = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) SetVersionName(v string) *DescribeDomainInfoResponseBody {
	s.VersionName = &v
	return s
}

func (s *DescribeDomainInfoResponseBody) Validate() error {
	if s.AvailableTtls != nil {
		if err := s.AvailableTtls.Validate(); err != nil {
			return err
		}
	}
	if s.DnsServers != nil {
		if err := s.DnsServers.Validate(); err != nil {
			return err
		}
	}
	if s.RecordLines != nil {
		if err := s.RecordLines.Validate(); err != nil {
			return err
		}
	}
	return nil
}

type DescribeDomainInfoResponseBodyAvailableTtls struct {
	AvailableTtl []*string `json:"AvailableTtl,omitempty" xml:"AvailableTtl,omitempty" type:"Repeated"`
}

func (s DescribeDomainInfoResponseBodyAvailableTtls) String() string {
	return dara.Prettify(s)
}

func (s DescribeDomainInfoResponseBodyAvailableTtls) GoString() string {
	return s.String()
}

func (s *DescribeDomainInfoResponseBodyAvailableTtls) GetAvailableTtl() []*string {
	return s.AvailableTtl
}

func (s *DescribeDomainInfoResponseBodyAvailableTtls) SetAvailableTtl(v []*string) *DescribeDomainInfoResponseBodyAvailableTtls {
	s.AvailableTtl = v
	return s
}

func (s *DescribeDomainInfoResponseBodyAvailableTtls) Validate() error {
	return dara.Validate(s)
}

type DescribeDomainInfoResponseBodyDnsServers struct {
	DnsServer []*string `json:"DnsServer,omitempty" xml:"DnsServer,omitempty" type:"Repeated"`
}

func (s DescribeDomainInfoResponseBodyDnsServers) String() string {
	return dara.Prettify(s)
}

func (s DescribeDomainInfoResponseBodyDnsServers) GoString() string {
	return s.String()
}

func (s *DescribeDomainInfoResponseBodyDnsServers) GetDnsServer() []*string {
	return s.DnsServer
}

func (s *DescribeDomainInfoResponseBodyDnsServers) SetDnsServer(v []*string) *DescribeDomainInfoResponseBodyDnsServers {
	s.DnsServer = v
	return s
}

func (s *DescribeDomainInfoResponseBodyDnsServers) Validate() error {
	return dara.Validate(s)
}

type DescribeDomainInfoResponseBodyRecordLines struct {
	RecordLine []*DescribeDomainInfoResponseBodyRecordLinesRecordLine `json:"RecordLine,omitempty" xml:"RecordLine,omitempty" type:"Repeated"`
}

func (s DescribeDomainInfoResponseBodyRecordLines) String() string {
	return dara.Prettify(s)
}

func (s DescribeDomainInfoResponseBodyRecordLines) GoString() string {
	return s.String()
}

func (s *DescribeDomainInfoResponseBodyRecordLines) GetRecordLine() []*DescribeDomainInfoResponseBodyRecordLinesRecordLine {
	return s.RecordLine
}

func (s *DescribeDomainInfoResponseBodyRecordLines) SetRecordLine(v []*DescribeDomainInfoResponseBodyRecordLinesRecordLine) *DescribeDomainInfoResponseBodyRecordLines {
	s.RecordLine = v
	return s
}

func (s *DescribeDomainInfoResponseBodyRecordLines) Validate() error {
	if s.RecordLine != nil {
		for _, item := range s.RecordLine {
			if item != nil {
				if err := item.Validate(); err != nil {
					return err
				}
			}
		}
	}
	return nil
}

type DescribeDomainInfoResponseBodyRecordLinesRecordLine struct {
	FatherCode      *string `json:"FatherCode,omitempty" xml:"FatherCode,omitempty"`
	LineCode        *string `json:"LineCode,omitempty" xml:"LineCode,omitempty"`
	LineDisplayName *string `json:"LineDisplayName,omitempty" xml:"LineDisplayName,omitempty"`
	LineName        *string `json:"LineName,omitempty" xml:"LineName,omitempty"`
}

func (s DescribeDomainInfoResponseBodyRecordLinesRecordLine) String() string {
	return dara.Prettify(s)
}

func (s DescribeDomainInfoResponseBodyRecordLinesRecordLine) GoString() string {
	return s.String()
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) GetFatherCode() *string {
	return s.FatherCode
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) GetLineCode() *string {
	return s.LineCode
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) GetLineDisplayName() *string {
	return s.LineDisplayName
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) GetLineName() *string {
	return s.LineName
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) SetFatherCode(v string) *DescribeDomainInfoResponseBodyRecordLinesRecordLine {
	s.FatherCode = &v
	return s
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) SetLineCode(v string) *DescribeDomainInfoResponseBodyRecordLinesRecordLine {
	s.LineCode = &v
	return s
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) SetLineDisplayName(v string) *DescribeDomainInfoResponseBodyRecordLinesRecordLine {
	s.LineDisplayName = &v
	return s
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) SetLineName(v string) *DescribeDomainInfoResponseBodyRecordLinesRecordLine {
	s.LineName = &v
	return s
}

func (s *DescribeDomainInfoResponseBodyRecordLinesRecordLine) Validate() error {
	return dara.Validate(s)
}
