代理注册(阶段 A)

POST /ath/agents/register 向 ATH 实现者注册一个新代理。实现者验证代理的身份,并根据其审批策略评估请求的能力。

请求

{
  "agent_id": "https://travel-agent.example.com/.well-known/agent.json",
  "agent_attestation": "<signed JWT>",
  "developer": {
    "name": "Example Corp",
    "id": "dev-example-12345"
  },
  "requested_providers": [
    {
      "provider_id": "example-mail",
      "scopes": ["mail:read", "mail:send"]
    }
  ],
  "purpose": "Travel planning assistant",
  "redirect_uris": ["https://travel-agent.example.com/callback"]
}

请求字段

字段类型必填描述
agent_idstring代理的规范 URI
agent_attestationstring证明代理身份的签名 JWT
developerobject开发者信息
developer.namestring开发者或组织名称
developer.idstring开发者标识符
requested_providersarray请求的服务提供方和范围
requested_providers[].provider_idstring服务提供方标识符
requested_providers[].scopesstring[]该服务提供方请求的范围
purposestring代理用途的人类可读描述
redirect_urisstring[]OAuth 回调 URI。如果提供,授权时通过精确匹配验证。如果省略(例如没有公网端点的本地代理),实现者必须(MUST)拒绝任何包含 user_redirect_uri 的授权请求

响应(成功)

{
  "client_id": "ath_travelbot_001",
  "client_secret": "ath_secret_xxxxx",
  "agent_status": "approved",
  "approved_providers": [
    {
      "provider_id": "example-mail",
      "approved_scopes": ["mail:read"],
      "denied_scopes": ["mail:send"],
      "denial_reason": "Send capability requires additional review"
    }
  ],
  "approval_expires": "2027-01-01T00:00:00Z"
}

响应字段

字段类型描述
client_idstring此次注册的唯一标识符
client_secretstring用于认证令牌交换请求的密钥
agent_statusstring"approved""pending""denied"
approved_providersarray各服务提供方的审批结果
approved_providers[].approved_scopesstring[]已批准的范围
approved_providers[].denied_scopesstring[]被拒绝的范围
approved_providers[].denial_reasonstring拒绝原因(如有)
approval_expiresstringISO 8601 格式的过期时间戳

行为

  • 实现者可以(MAY)批准请求能力的子集
  • 代理必须(MUST)遵守已批准的范围限制
  • 对同一 agent_id 的重复注册建议(SHOULD)返回 409 Conflict