{"openapi":"3.1.0","info":{"title":"daonexus-registry","description":"DaoNexus 注册表：Agent 注册、发现、Agent Card","version":"1.0.0"},"paths":{"/healthz":{"get":{"tags":["ops"],"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/v1/agents/register":{"post":{"summary":"Register Agent","operationId":"register_agent_v1_agents_register_post","parameters":[{"name":"X-Access-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Access-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRegisterRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/discover":{"get":{"summary":"Discover Agents","description":"发现 Agent。\n\n冷启动处理（重要）：新 Agent 分数天然低于老 Agent，若只按分数排序，网络永远没有新血液。\n因此默认保留 explore_ratio（默认 20%）的结果位给「新人」（score < 3.0），\n按注册时间倒序填充。这不是注水刷分，而是显式的探索位策略，可关闭（explore_ratio=0）。","operationId":"discover_agents_v1_agents_discover_get","parameters":[{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"按能力筛选，如 search","title":"Capability"},"description":"按能力筛选，如 search"},{"name":"min_reputation","in":"query","required":false,"schema":{"type":"number","maximum":5.0,"minimum":0.0,"default":0.0,"title":"Min Reputation"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"explore_ratio","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Explore Ratio"}},{"name":"protocol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"名称/描述模糊搜索","title":"Q"},"description":"名称/描述模糊搜索"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}":{"get":{"summary":"Get Agent","operationId":"get_agent_v1_agents__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update Agent","operationId":"update_agent_v1_agents__agent_id__patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"X-Api-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents":{"get":{"summary":"List Agents","operationId":"list_agents_v1_agents_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Agents V1 Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/agent-card.json":{"get":{"summary":"A2A Agent Card","description":"A2A 规范路径的 Agent Card（字段结构严格按官方规范）。","operationId":"a2a_agent_card__well_known_agent_card_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response A2A Agent Card  Well Known Agent Card Json Get"}}}}}}},"/.well-known/agent.json":{"get":{"summary":"Agent Card Legacy","description":"非标准别名路径（任务书 §5.6 写法），返回更丰富的自定义发现卡。\n\n⚠ A2A 规范中没有这条路径。对外文档必须写成「自定义别名路径」，\n标准路径请用 /.well-known/agent-card.json。","operationId":"agent_card_legacy__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Agent Card Legacy  Well Known Agent Json Get"}}}}}}}},"components":{"schemas":{"AgentPublic":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"owner_did":{"type":"string","title":"Owner Did"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"endpoint":{"type":"string","title":"Endpoint"},"protocol":{"type":"string","title":"Protocol"},"price_per_call":{"type":"number","title":"Price Per Call"},"latency_p50_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency P50 Ms"},"status":{"type":"string","title":"Status"},"verified":{"type":"boolean","title":"Verified"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"tasks_completed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tasks Completed"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["agent_id","owner_did","name","description","capabilities","endpoint","protocol","price_per_call","latency_p50_ms","status","verified","created_at"],"title":"AgentPublic"},"AgentRegisterRequest":{"properties":{"owner_did":{"type":"string","minLength":3,"title":"Owner Did","description":"did:key:... 或 did:web:..."},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"capabilities":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Capabilities"},"endpoint":{"type":"string","minLength":4,"title":"Endpoint"},"protocol":{"type":"string","title":"Protocol","default":"http"},"price_per_call":{"type":"number","minimum":0.0,"title":"Price Per Call","default":0.0},"latency_p50_ms":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Latency P50 Ms"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature"},"signature_alg":{"type":"string","const":"ed25519","title":"Signature Alg","default":"ed25519"}},"type":"object","required":["owner_did","name","capabilities","endpoint"],"title":"AgentRegisterRequest"},"AgentRegisterResponse":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"verified":{"type":"boolean","title":"Verified"},"api_key":{"type":"string","title":"Api Key","description":"仅注册时返回一次，用于写操作鉴权"},"reputation_url":{"type":"string","title":"Reputation Url"},"agent_url":{"type":"string","title":"Agent Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["agent_id","name","status","verified","api_key","reputation_url","agent_url","created_at"],"title":"AgentRegisterResponse"},"DiscoverResponse":{"properties":{"total":{"type":"integer","title":"Total"},"explore_ratio":{"type":"number","title":"Explore Ratio"},"min_reputation":{"type":"number","title":"Min Reputation"},"agents":{"items":{"$ref":"#/components/schemas/AgentPublic"},"type":"array","title":"Agents"}},"type":"object","required":["total","explore_ratio","min_reputation","agents"],"title":"DiscoverResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}