You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
LCORE-1958: Fix duplicate A2A operationIds and OpenAPI response metadata
Separate GET/POST operationId values on /a2a, tighten route summaries and
descriptions for the spec, and fix Responses streaming OpenAPI (200 text/event-
stream: drop invalid sibling description; clarify JSON success description).
Regenerate docs/openapi.json for those paths only (no global tag list yet).
Copy file name to clipboardExpand all lines: docs/openapi.json
+41-12Lines changed: 41 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -9205,7 +9205,7 @@
9205
9205
},
9206
9206
"responses": {
9207
9207
"200": {
9208
-
"description": "Successful response",
9208
+
"description": "Successful response. For `text/event-stream`, the body is a Server-Sent Events stream.",
9209
9209
"content": {
9210
9210
"application/json": {
9211
9211
"schema": {
@@ -9262,8 +9262,7 @@
9262
9262
"schema": {
9263
9263
"type": "string"
9264
9264
},
9265
-
"example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-4o-mini\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-4o-mini\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n",
9266
-
"description": "SSE stream of events"
9265
+
"example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-4o-mini\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-4o-mini\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n"
9267
9266
}
9268
9267
}
9269
9268
},
@@ -10600,15 +10599,30 @@
10600
10599
"tags": [
10601
10600
"a2a"
10602
10601
],
10603
-
"summary": "Handle A2A Jsonrpc",
10604
-
"description": "Handle A2A JSON-RPC requests following the A2A protocol specification.\n\nThis endpoint uses the DefaultRequestHandler from the A2A SDK to handle\nall JSON-RPC requests including message/send, message/stream, etc.\n\nThe A2A SDK application is created per-request to include authentication\ncontext while still leveraging FastAPI's authorization middleware.\n\nAutomatically detects streaming requests (message/stream JSON-RPC method)\nand returns a StreamingResponse to enable real-time chunk delivery.\n\nArgs:\n request: FastAPI request object\n auth: Authentication tuple\n mcp_headers: MCP headers for context propagation\n\nReturns:\n JSON-RPC response or streaming response",
10602
+
"summary": "Handle A2A JSON-RPC GET",
10603
+
"description": "Handle GET on /a2a for A2A JSON-RPC requests following the A2A protocol specification.",
10605
10604
"operationId": "handle_a2a_jsonrpc_a2a_get",
10606
10605
"responses": {
10607
10606
"200": {
10608
-
"description": "Successful Response",
10607
+
"description": "Successful response: buffered JSON-RPC or HTTP payload for non-streaming calls, or a Server-Sent Events stream when the JSON-RPC method is message/stream.",
10609
10608
"content": {
10610
10609
"application/json": {
10611
-
"schema": {}
10610
+
"schema": {
10611
+
"type": "object",
10612
+
"description": "JSON-RPC 2.0 response or A2A-over-HTTP payload"
"description": "Handle A2A JSON-RPC requests following the A2A protocol specification.\n\nThis endpoint uses the DefaultRequestHandler from the A2A SDK to handle\nall JSON-RPC requests including message/send, message/stream, etc.\n\nThe A2A SDK application is created per-request to include authentication\ncontext while still leveraging FastAPI's authorization middleware.\n\nAutomatically detects streaming requests (message/stream JSON-RPC method)\nand returns a StreamingResponse to enable real-time chunk delivery.\n\nArgs:\n request: FastAPI request object\n auth: Authentication tuple\n mcp_headers: MCP headers for context propagation\n\nReturns:\n JSON-RPC response or streaming response",
10623
-
"operationId": "handle_a2a_jsonrpc_a2a_get",
10635
+
"summary": "Handle A2A JSON-RPC POST",
10636
+
"description": "Handle POST on /a2a for A2A JSON-RPC requests following the A2A protocol specification.",
10637
+
"operationId": "handle_a2a_jsonrpc_a2a_post",
10624
10638
"responses": {
10625
10639
"200": {
10626
-
"description": "Successful Response",
10640
+
"description": "Successful response: buffered JSON-RPC or HTTP payload for non-streaming calls, or a Server-Sent Events stream when the JSON-RPC method is message/stream.",
10627
10641
"content": {
10628
10642
"application/json": {
10629
-
"schema": {}
10643
+
"schema": {
10644
+
"type": "object",
10645
+
"description": "JSON-RPC 2.0 response or A2A-over-HTTP payload"
0 commit comments