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

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

type iVerifyAtiAgentDnsRecordsResponseBody interface {
	dara.Model
	String() string
	GoString() string
	SetAccessDeniedDetail(v *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) *VerifyAtiAgentDnsRecordsResponseBody
	GetAccessDeniedDetail() *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail
	SetAgentRegisterInfoId(v string) *VerifyAtiAgentDnsRecordsResponseBody
	GetAgentRegisterInfoId() *string
	SetAgentStatus(v string) *VerifyAtiAgentDnsRecordsResponseBody
	GetAgentStatus() *string
	SetAllVerified(v bool) *VerifyAtiAgentDnsRecordsResponseBody
	GetAllVerified() *bool
	SetRequestId(v string) *VerifyAtiAgentDnsRecordsResponseBody
	GetRequestId() *string
	SetResults(v *VerifyAtiAgentDnsRecordsResponseBodyResults) *VerifyAtiAgentDnsRecordsResponseBody
	GetResults() *VerifyAtiAgentDnsRecordsResponseBodyResults
	SetSuccess(v bool) *VerifyAtiAgentDnsRecordsResponseBody
	GetSuccess() *bool
}

type VerifyAtiAgentDnsRecordsResponseBody struct {
	// The details about the access denial. This field is returned only when RAM authentication fails.
	AccessDeniedDetail *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail `json:"AccessDeniedDetail,omitempty" xml:"AccessDeniedDetail,omitempty" type:"Struct"`
	// The Agent registration ID. This ID is automatically generated by the Alibaba Cloud ATS platform and is globally unique within the platform.
	//
	// example:
	//
	// 2074753647748672512
	AgentRegisterInfoId *string `json:"AgentRegisterInfoId,omitempty" xml:"AgentRegisterInfoId,omitempty"`
	// The Agent status.
	//
	// example:
	//
	// 活跃
	AgentStatus *string `json:"AgentStatus,omitempty" xml:"AgentStatus,omitempty"`
	// Indicates whether all DNS records have been verified.
	//
	// example:
	//
	// true
	AllVerified *bool `json:"AllVerified,omitempty" xml:"AllVerified,omitempty"`
	// The request ID.
	//
	// example:
	//
	// B57C121B-A45F-44D8-A9B2-XXXXXXX
	RequestId *string                                      `json:"RequestId,omitempty" xml:"RequestId,omitempty"`
	Results   *VerifyAtiAgentDnsRecordsResponseBodyResults `json:"Results,omitempty" xml:"Results,omitempty" type:"Struct"`
	// Indicates whether the operation to delete the domain name instance configuration is successful. Valid values:
	//
	// - true: The operation is successful.
	//
	// - false: The operation failed.
	//
	// example:
	//
	// true
	Success *bool `json:"Success,omitempty" xml:"Success,omitempty"`
}

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

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

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetAccessDeniedDetail() *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	return s.AccessDeniedDetail
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetAgentRegisterInfoId() *string {
	return s.AgentRegisterInfoId
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetAgentStatus() *string {
	return s.AgentStatus
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetAllVerified() *bool {
	return s.AllVerified
}

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

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetResults() *VerifyAtiAgentDnsRecordsResponseBodyResults {
	return s.Results
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) GetSuccess() *bool {
	return s.Success
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetAccessDeniedDetail(v *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) *VerifyAtiAgentDnsRecordsResponseBody {
	s.AccessDeniedDetail = v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetAgentRegisterInfoId(v string) *VerifyAtiAgentDnsRecordsResponseBody {
	s.AgentRegisterInfoId = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetAgentStatus(v string) *VerifyAtiAgentDnsRecordsResponseBody {
	s.AgentStatus = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetAllVerified(v bool) *VerifyAtiAgentDnsRecordsResponseBody {
	s.AllVerified = &v
	return s
}

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

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetResults(v *VerifyAtiAgentDnsRecordsResponseBodyResults) *VerifyAtiAgentDnsRecordsResponseBody {
	s.Results = v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) SetSuccess(v bool) *VerifyAtiAgentDnsRecordsResponseBody {
	s.Success = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBody) Validate() error {
	if s.AccessDeniedDetail != nil {
		if err := s.AccessDeniedDetail.Validate(); err != nil {
			return err
		}
	}
	if s.Results != nil {
		if err := s.Results.Validate(); err != nil {
			return err
		}
	}
	return nil
}

type VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail struct {
	// The unauthorized operation that was attempted.
	//
	// example:
	//
	// AddRspDomainServerHoldStatusForGatewayOte
	AuthAction *string `json:"AuthAction,omitempty" xml:"AuthAction,omitempty"`
	// The display name of the authorization principal.
	//
	// example:
	//
	// 2015555733387XXXX
	AuthPrincipalDisplayName *string `json:"AuthPrincipalDisplayName,omitempty" xml:"AuthPrincipalDisplayName,omitempty"`
	// The owner ID of the authorization principal.
	//
	// example:
	//
	// 1046973331XXXX
	AuthPrincipalOwnerId *string `json:"AuthPrincipalOwnerId,omitempty" xml:"AuthPrincipalOwnerId,omitempty"`
	// The identity type.
	//
	// example:
	//
	// SubUser
	AuthPrincipalType *string `json:"AuthPrincipalType,omitempty" xml:"AuthPrincipalType,omitempty"`
	// The encoded complete diagnostic message.
	//
	// example:
	//
	// AQEAAAAAaNIARXXXXUQwNjE0LUQzN0XXXXVEQy1BQzExLTMzXXXXNTkxRjk1Ng==
	EncodedDiagnosticMessage *string `json:"EncodedDiagnosticMessage,omitempty" xml:"EncodedDiagnosticMessage,omitempty"`
	// The reason for the authentication failure. Valid values:
	//
	// - ExplicitDeny: explicit deny.
	//
	// - ImplicitDeny: implicit deny.
	//
	// example:
	//
	// ImplicitDeny
	NoPermissionType *string `json:"NoPermissionType,omitempty" xml:"NoPermissionType,omitempty"`
	// The policy type.
	//
	// example:
	//
	// DlpSend
	PolicyType *string `json:"PolicyType,omitempty" xml:"PolicyType,omitempty"`
}

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

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

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetAuthAction() *string {
	return s.AuthAction
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetAuthPrincipalDisplayName() *string {
	return s.AuthPrincipalDisplayName
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetAuthPrincipalOwnerId() *string {
	return s.AuthPrincipalOwnerId
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetAuthPrincipalType() *string {
	return s.AuthPrincipalType
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetEncodedDiagnosticMessage() *string {
	return s.EncodedDiagnosticMessage
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetNoPermissionType() *string {
	return s.NoPermissionType
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) GetPolicyType() *string {
	return s.PolicyType
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetAuthAction(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.AuthAction = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetAuthPrincipalDisplayName(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.AuthPrincipalDisplayName = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetAuthPrincipalOwnerId(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.AuthPrincipalOwnerId = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetAuthPrincipalType(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.AuthPrincipalType = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetEncodedDiagnosticMessage(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.EncodedDiagnosticMessage = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetNoPermissionType(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.NoPermissionType = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail) SetPolicyType(v string) *VerifyAtiAgentDnsRecordsResponseBodyAccessDeniedDetail {
	s.PolicyType = &v
	return s
}

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

type VerifyAtiAgentDnsRecordsResponseBodyResults struct {
	Result []*VerifyAtiAgentDnsRecordsResponseBodyResultsResult `json:"Result,omitempty" xml:"Result,omitempty" type:"Repeated"`
}

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

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

func (s *VerifyAtiAgentDnsRecordsResponseBodyResults) GetResult() []*VerifyAtiAgentDnsRecordsResponseBodyResultsResult {
	return s.Result
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResults) SetResult(v []*VerifyAtiAgentDnsRecordsResponseBodyResultsResult) *VerifyAtiAgentDnsRecordsResponseBodyResults {
	s.Result = v
	return s
}

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

type VerifyAtiAgentDnsRecordsResponseBodyResultsResult struct {
	FailReason   *string `json:"FailReason,omitempty" xml:"FailReason,omitempty"`
	RecordName   *string `json:"RecordName,omitempty" xml:"RecordName,omitempty"`
	RecordType   *string `json:"RecordType,omitempty" xml:"RecordType,omitempty"`
	VerifyStatus *string `json:"VerifyStatus,omitempty" xml:"VerifyStatus,omitempty"`
}

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

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

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) GetFailReason() *string {
	return s.FailReason
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) GetRecordName() *string {
	return s.RecordName
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) GetRecordType() *string {
	return s.RecordType
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) GetVerifyStatus() *string {
	return s.VerifyStatus
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) SetFailReason(v string) *VerifyAtiAgentDnsRecordsResponseBodyResultsResult {
	s.FailReason = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) SetRecordName(v string) *VerifyAtiAgentDnsRecordsResponseBodyResultsResult {
	s.RecordName = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) SetRecordType(v string) *VerifyAtiAgentDnsRecordsResponseBodyResultsResult {
	s.RecordType = &v
	return s
}

func (s *VerifyAtiAgentDnsRecordsResponseBodyResultsResult) SetVerifyStatus(v string) *VerifyAtiAgentDnsRecordsResponseBodyResultsResult {
	s.VerifyStatus = &v
	return s
}

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