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

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

type iUpdateAtiAgentRegisterInfoRequest interface {
	dara.Model
	String() string
	GoString() string
	SetAgentDescription(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentDescription() *string
	SetAgentDisplayName(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentDisplayName() *string
	SetAgentHost(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentHost() *string
	SetAgentRegisterInfoId(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentRegisterInfoId() *string
	SetAgentSubHost(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentSubHost() *string
	SetAgentVersion(v string) *UpdateAtiAgentRegisterInfoRequest
	GetAgentVersion() *string
	SetClientToken(v string) *UpdateAtiAgentRegisterInfoRequest
	GetClientToken() *string
	SetDomainMode(v string) *UpdateAtiAgentRegisterInfoRequest
	GetDomainMode() *string
	SetEndpoints(v []*UpdateAtiAgentRegisterInfoRequestEndpoints) *UpdateAtiAgentRegisterInfoRequest
	GetEndpoints() []*UpdateAtiAgentRegisterInfoRequestEndpoints
	SetRegistrantId(v string) *UpdateAtiAgentRegisterInfoRequest
	GetRegistrantId() *string
}

type UpdateAtiAgentRegisterInfoRequest struct {
	// The capability description of the Agent.
	//
	// example:
	//
	// 支付服务
	AgentDescription *string `json:"AgentDescription,omitempty" xml:"AgentDescription,omitempty"`
	// The display name of the Agent.
	//
	// example:
	//
	// 测试Agent
	AgentDisplayName *string `json:"AgentDisplayName,omitempty" xml:"AgentDisplayName,omitempty"`
	// The host address of the Agent.
	//
	// example:
	//
	// example.com
	AgentHost *string `json:"AgentHost,omitempty" xml:"AgentHost,omitempty"`
	// The Agent registration ID. This ID is automatically generated by the Alibaba Cloud ATS platform and is globally unique within the platform. The ID is automatically generated during the Agent registration process. In API-based registration and query workflows, this ID must be included throughout the entire process. Call the ListAtiAgentRegisterInfos operation to query the target Agent and obtain the AgentRegisterInfoId from the response.
	//
	// example:
	//
	// 2074753647748672512
	AgentRegisterInfoId *string `json:"AgentRegisterInfoId,omitempty" xml:"AgentRegisterInfoId,omitempty"`
	AgentSubHost        *string `json:"AgentSubHost,omitempty" xml:"AgentSubHost,omitempty"`
	// The version of the Agent.
	//
	// example:
	//
	// 1.0.0
	AgentVersion *string `json:"AgentVersion,omitempty" xml:"AgentVersion,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"`
	DomainMode  *string `json:"DomainMode,omitempty" xml:"DomainMode,omitempty"`
	// The endpoints for each protocol.
	//
	// example:
	//
	// https://example.com/mcp
	Endpoints []*UpdateAtiAgentRegisterInfoRequestEndpoints `json:"Endpoints,omitempty" xml:"Endpoints,omitempty" type:"Repeated"`
	// The ID of the real-name verified registrant.
	//
	// example:
	//
	// 2072277378616354816
	RegistrantId *string `json:"RegistrantId,omitempty" xml:"RegistrantId,omitempty"`
}

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

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

func (s *UpdateAtiAgentRegisterInfoRequest) GetAgentDescription() *string {
	return s.AgentDescription
}

func (s *UpdateAtiAgentRegisterInfoRequest) GetAgentDisplayName() *string {
	return s.AgentDisplayName
}

func (s *UpdateAtiAgentRegisterInfoRequest) GetAgentHost() *string {
	return s.AgentHost
}

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

func (s *UpdateAtiAgentRegisterInfoRequest) GetAgentSubHost() *string {
	return s.AgentSubHost
}

func (s *UpdateAtiAgentRegisterInfoRequest) GetAgentVersion() *string {
	return s.AgentVersion
}

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

func (s *UpdateAtiAgentRegisterInfoRequest) GetDomainMode() *string {
	return s.DomainMode
}

func (s *UpdateAtiAgentRegisterInfoRequest) GetEndpoints() []*UpdateAtiAgentRegisterInfoRequestEndpoints {
	return s.Endpoints
}

func (s *UpdateAtiAgentRegisterInfoRequest) GetRegistrantId() *string {
	return s.RegistrantId
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetAgentDescription(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.AgentDescription = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetAgentDisplayName(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.AgentDisplayName = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetAgentHost(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.AgentHost = &v
	return s
}

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

func (s *UpdateAtiAgentRegisterInfoRequest) SetAgentSubHost(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.AgentSubHost = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetAgentVersion(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.AgentVersion = &v
	return s
}

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

func (s *UpdateAtiAgentRegisterInfoRequest) SetDomainMode(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.DomainMode = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetEndpoints(v []*UpdateAtiAgentRegisterInfoRequestEndpoints) *UpdateAtiAgentRegisterInfoRequest {
	s.Endpoints = v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequest) SetRegistrantId(v string) *UpdateAtiAgentRegisterInfoRequest {
	s.RegistrantId = &v
	return s
}

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

type UpdateAtiAgentRegisterInfoRequestEndpoints struct {
	// The actual service address of the Agent endpoint, which is the HTTPS entry point where the Agent runs online. This is a required field with a maximum of 500 characters.
	//
	// Example: https://my-agent.example.com/mcp
	//
	// Purpose: After a caller discovers this Agent through DNS, the caller can use this URL to initiate a connection directly. This is the address where the Agent is actually online.
	//
	// example:
	//
	// https://my-agent.example.com/mcp
	AgentUrl *string `json:"AgentUrl,omitempty" xml:"AgentUrl,omitempty"`
	// An optional URL that points to the metadata description file of the Agent, typically in JSON format. Purpose: This URL allows other Agents or clients to automatically discover the capability description of the Agent before connecting, including the functions supported by the Agent, input/output formats, version information, and other capability declarations.
	//
	// example:
	//
	// // https://my-agent.example.com/.well-known/agent.json
	//
	// {
	//
	//   "name": "智能客服助手",
	//
	//   "version": "1.2.0",
	//
	//   "protocol": "MCP",
	//
	//   "description": "提供产品咨询、订单查询、售后服务的智能客服Agent",
	//
	//   "capabilities": {
	//
	//     "tools": [
	//
	//       { "name": "order_query", "description": "查询订单状态" },
	//
	//       { "name": "product_search", "description": "搜索产品信息" },
	//
	//       { "name": "refund_request", "description": "发起退款申请" }
	//
	//     ],
	//
	//     "resources": [
	//
	//       { "uri": "faq://knowledge-base", "description": "FAQ知识库" }
	//
	//     ]
	//
	//   },
	//
	//   "endpoint": {
	//
	//     "url": "https://my-agent.example.com/mcp",
	//
	//     "transport": ["STREAMABLE-HTTP", "SSE"]
	//
	//   },
	//
	//   "policy": {
	//
	//     "authentication": "mTLS",
	//
	//     "rateLimit": "100/min"
	//
	//   }
	//
	// }
	MetadataUrl *string `json:"MetadataUrl,omitempty" xml:"MetadataUrl,omitempty"`
	// The communication protocol standard that the Agent endpoint follows, which determines how callers interact with the Agent.
	//
	// Valid values:
	//
	// - MCP: Model Context Protocol, an Agent tool calling protocol introduced by Anthropic.
	//
	// - A2A: Agent-to-Agent Protocol, a cross-Agent communication protocol introduced by Google.
	//
	// - OpenAPI: standard RESTful API specification (Swagger/OpenAPI).
	//
	// Purpose: When other Agents or clients see this protocol identity, they know which method to use to invoke the Agent. For example, MCP protocol uses MCP SDK, A2A uses A2A SDK, and OpenAPI uses standard HTTP requests.
	//
	// example:
	//
	// mcp
	Protocol *string `json:"Protocol,omitempty" xml:"Protocol,omitempty"`
	// The transport methods.
	Transports []*string `json:"Transports,omitempty" xml:"Transports,omitempty" type:"Repeated"`
}

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

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

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) GetAgentUrl() *string {
	return s.AgentUrl
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) GetMetadataUrl() *string {
	return s.MetadataUrl
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) GetProtocol() *string {
	return s.Protocol
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) GetTransports() []*string {
	return s.Transports
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) SetAgentUrl(v string) *UpdateAtiAgentRegisterInfoRequestEndpoints {
	s.AgentUrl = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) SetMetadataUrl(v string) *UpdateAtiAgentRegisterInfoRequestEndpoints {
	s.MetadataUrl = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) SetProtocol(v string) *UpdateAtiAgentRegisterInfoRequestEndpoints {
	s.Protocol = &v
	return s
}

func (s *UpdateAtiAgentRegisterInfoRequestEndpoints) SetTransports(v []*string) *UpdateAtiAgentRegisterInfoRequestEndpoints {
	s.Transports = v
	return s
}

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