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

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

type iRevokeAtiAgentRegisterInfoRequest interface {
	dara.Model
	String() string
	GoString() string
	SetAgentRegisterInfoId(v string) *RevokeAtiAgentRegisterInfoRequest
	GetAgentRegisterInfoId() *string
	SetClientToken(v string) *RevokeAtiAgentRegisterInfoRequest
	GetClientToken() *string
	SetReason(v string) *RevokeAtiAgentRegisterInfoRequest
	GetReason() *string
	SetReasonCode(v string) *RevokeAtiAgentRegisterInfoRequest
	GetReasonCode() *string
}

type RevokeAtiAgentRegisterInfoRequest struct {
	// The Agent registration ID. This ID is automatically generated by the Alibaba Cloud ATS platform and is globally unique within the platform. It is automatically generated during the Agent registration process. This ID must be included throughout the API registration and query processes. Call the ListAtiAgentRegisterInfos operation to query the target Agent and obtain the AgentRegisterInfoId from the response.
	//
	// This parameter is required.
	//
	// example:
	//
	// 2074753647748672512
	AgentRegisterInfoId *string `json:"AgentRegisterInfoId,omitempty" xml:"AgentRegisterInfoId,omitempty"`
	// The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.
	//
	// > If you do not specify this parameter, the system automatically uses the RequestId of the API request as the ClientToken. The RequestId may be different for each API request.
	//
	// example:
	//
	// eyJhbGciOiJIUzI1NiIsInR5cC.....
	ClientToken *string `json:"ClientToken,omitempty" xml:"ClientToken,omitempty"`
	// The reason for unregistration. Valid values:
	//
	// - Key compromise
	//
	// - CA key compromise
	//
	// - Affiliation changed
	//
	// - Certificate superseded
	//
	// - Cessation of operation
	//
	// - Certificate hold
	//
	// - Remove from CRL
	//
	// - Privilege withdrawn
	//
	// - AA compromise
	//
	// - Unspecified
	//
	// example:
	//
	// 从属关系变更
	Reason *string `json:"Reason,omitempty" xml:"Reason,omitempty"`
	// The revocation reason code as defined in RFC 5280. Valid values:
	//
	// - unspecified: Unspecified. Default value. Used when the CA does not provide a specific reason or the reason is unknown. This is the most common code.
	//
	// - keyCompromise: Key compromise. The private key may have been obtained by an unauthorized party. This is the most serious reason and typically means the certificate must be revoked immediately and cannot be recovered.
	//
	// - cACompromise: CA key compromise. The private key of the CA that issued the certificate has been compromised. This affects all certificates issued by the CA and typically results in the revocation of the entire subtree.
	//
	// - affiliationChanged: Affiliation changed. The identity information of the certificate holder (such as name or organization name) has changed, but the public key is still valid. For example, an employee leaves the company or the company is renamed.
	//
	// - superseded: Certificate superseded. The certificate holder has applied for a new certificate (for example, key rotation or algorithm upgrade), and the old certificate is revoked. The old key has not been compromised.
	//
	// - cessationOfOperation: Cessation of operation. The certificate holder no longer uses the key for related operations (for example, server decommissioning or service termination). The key has not been compromised.
	//
	// - certificateHold: Certificate hold. Temporary revocation. Typically used for investigating suspicious activities or for administrative reasons. The hold can be removed later (Unhold) to make the certificate valid again. Note: This code cannot be used for final revocation.
	//
	// - removeFromCRL: Remove from CRL. Used only for delta CRLs (incremental revocation lists). Indicates that a certificate previously held by certificateHold has been released and should be removed from the revocation list. This is not a revocation reason but a status update instruction.
	//
	// - privilegeWithdrawn: Privilege withdrawn. The privileges or attributes granted in the certificate have been revoked (primarily used for Attribute Certificates and rarely used for regular SSL/TLS certificates).
	//
	// - aACompromise: AA compromise. The key of the Attribute Authority (AA) that issued the attribute certificate has been compromised. This is also primarily used in the attribute certificate system.
	//
	// This parameter is required.
	//
	// example:
	//
	// unspecified
	ReasonCode *string `json:"ReasonCode,omitempty" xml:"ReasonCode,omitempty"`
}

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

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

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

func (s *RevokeAtiAgentRegisterInfoRequest) GetClientToken() *string {
	return s.ClientToken
}

func (s *RevokeAtiAgentRegisterInfoRequest) GetReason() *string {
	return s.Reason
}

func (s *RevokeAtiAgentRegisterInfoRequest) GetReasonCode() *string {
	return s.ReasonCode
}

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

func (s *RevokeAtiAgentRegisterInfoRequest) SetClientToken(v string) *RevokeAtiAgentRegisterInfoRequest {
	s.ClientToken = &v
	return s
}

func (s *RevokeAtiAgentRegisterInfoRequest) SetReason(v string) *RevokeAtiAgentRegisterInfoRequest {
	s.Reason = &v
	return s
}

func (s *RevokeAtiAgentRegisterInfoRequest) SetReasonCode(v string) *RevokeAtiAgentRegisterInfoRequest {
	s.ReasonCode = &v
	return s
}

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