Skip to content

Commit 5b6a7cc

Browse files
author
Lasim
committed
feat(backend): add endpoint to retrieve single request by ID with full response
1 parent f88b795 commit 5b6a7cc

File tree

6 files changed

+738
-26
lines changed

6 files changed

+738
-26
lines changed

services/backend/api-spec.json

Lines changed: 255 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13635,7 +13635,7 @@
1363513635
"tags": [
1363613636
"MCP Installations"
1363713637
],
13638-
"description": "Retrieves request logs (tool calls with params and responses) for a specific MCP installation. Includes tool_name, tool_params, tool_response, timing, and success status. Requires mcp.installations.view permission. Note: Request logging can be disabled per-installation via settings. Logs are returned newest first.",
13638+
"description": "Retrieves request logs (tool calls with parameters) for a specific MCP installation. Includes tool_name, tool_params, timing, and success status. Does NOT include tool_response (use single request endpoint to get full response). Requires mcp.installations.view permission. Note: Request logging can be disabled per-installation via settings. Logs are returned newest first.",
1363913639
"parameters": [
1364013640
{
1364113641
"schema": {
@@ -13759,9 +13759,6 @@
1375913759
"tool_params": {
1376013760
"description": "Parameters passed to the tool (JSONB)"
1376113761
},
13762-
"tool_response": {
13763-
"description": "The actual response from MCP server (JSONB, nullable)"
13764-
},
1376513762
"response_time_ms": {
1376613763
"type": "integer",
1376713764
"description": "Response time in milliseconds"
@@ -13930,6 +13927,259 @@
1393013927
}
1393113928
}
1393213929
},
13930+
"/api/teams/{teamId}/mcp/installations/{installationId}/requests/{requestId}": {
13931+
"get": {
13932+
"summary": "Get single request by ID with full response",
13933+
"tags": [
13934+
"MCP Installations"
13935+
],
13936+
"description": "Retrieves a single request log entry including the full tool_response. Use this endpoint to fetch complete request details on-demand after viewing the request in the list. Requires mcp.installations.view permission.",
13937+
"parameters": [
13938+
{
13939+
"schema": {
13940+
"type": "string",
13941+
"minLength": 1
13942+
},
13943+
"in": "path",
13944+
"name": "teamId",
13945+
"required": true,
13946+
"description": "Team ID that owns the installation"
13947+
},
13948+
{
13949+
"schema": {
13950+
"type": "string",
13951+
"minLength": 1
13952+
},
13953+
"in": "path",
13954+
"name": "installationId",
13955+
"required": true,
13956+
"description": "Installation ID"
13957+
},
13958+
{
13959+
"schema": {
13960+
"type": "string",
13961+
"minLength": 1
13962+
},
13963+
"in": "path",
13964+
"name": "requestId",
13965+
"required": true,
13966+
"description": "Request log entry ID"
13967+
}
13968+
],
13969+
"security": [
13970+
{
13971+
"cookieAuth": []
13972+
},
13973+
{
13974+
"bearerAuth": []
13975+
}
13976+
],
13977+
"responses": {
13978+
"200": {
13979+
"description": "Request details retrieved successfully",
13980+
"content": {
13981+
"application/json": {
13982+
"schema": {
13983+
"type": "object",
13984+
"properties": {
13985+
"success": {
13986+
"type": "boolean",
13987+
"description": "Indicates if the operation was successful"
13988+
},
13989+
"data": {
13990+
"type": "object",
13991+
"properties": {
13992+
"id": {
13993+
"type": "string",
13994+
"description": "Request log entry unique identifier"
13995+
},
13996+
"user": {
13997+
"oneOf": [
13998+
{
13999+
"type": "object",
14000+
"properties": {
14001+
"user_id": {
14002+
"type": "string",
14003+
"description": "User ID"
14004+
},
14005+
"user_name": {
14006+
"type": "string",
14007+
"description": "Username"
14008+
},
14009+
"email": {
14010+
"type": "string",
14011+
"description": "User email address"
14012+
}
14013+
},
14014+
"required": [
14015+
"user_id",
14016+
"user_name",
14017+
"email"
14018+
]
14019+
},
14020+
{
14021+
"type": "null"
14022+
}
14023+
],
14024+
"description": "User who made the request (nullable)"
14025+
},
14026+
"tool_name": {
14027+
"type": "string",
14028+
"description": "Name of the tool that was called"
14029+
},
14030+
"tool_params": {
14031+
"description": "Parameters passed to the tool (JSONB)"
14032+
},
14033+
"tool_response": {
14034+
"description": "The actual response from MCP server (JSONB, nullable)"
14035+
},
14036+
"response_time_ms": {
14037+
"type": "integer",
14038+
"description": "Response time in milliseconds"
14039+
},
14040+
"success": {
14041+
"type": "boolean",
14042+
"description": "Whether the call succeeded"
14043+
},
14044+
"error_message": {
14045+
"type": [
14046+
"null",
14047+
"string"
14048+
],
14049+
"description": "Error message if failed (nullable)"
14050+
},
14051+
"created_at": {
14052+
"type": "string",
14053+
"format": "date-time",
14054+
"description": "ISO 8601 timestamp when request was made"
14055+
}
14056+
},
14057+
"required": [
14058+
"id",
14059+
"tool_name",
14060+
"tool_response",
14061+
"response_time_ms",
14062+
"success",
14063+
"created_at"
14064+
]
14065+
}
14066+
},
14067+
"required": [
14068+
"success",
14069+
"data"
14070+
],
14071+
"description": "Request details retrieved successfully"
14072+
}
14073+
}
14074+
}
14075+
},
14076+
"401": {
14077+
"description": "Unauthorized - Authentication required",
14078+
"content": {
14079+
"application/json": {
14080+
"schema": {
14081+
"type": "object",
14082+
"properties": {
14083+
"success": {
14084+
"type": "boolean",
14085+
"default": false,
14086+
"description": "Indicates failure"
14087+
},
14088+
"error": {
14089+
"type": "string",
14090+
"description": "Error message detailing what went wrong"
14091+
}
14092+
},
14093+
"required": [
14094+
"success",
14095+
"error"
14096+
],
14097+
"description": "Unauthorized - Authentication required"
14098+
}
14099+
}
14100+
}
14101+
},
14102+
"403": {
14103+
"description": "Forbidden - Insufficient permissions or not a team member",
14104+
"content": {
14105+
"application/json": {
14106+
"schema": {
14107+
"type": "object",
14108+
"properties": {
14109+
"success": {
14110+
"type": "boolean",
14111+
"default": false,
14112+
"description": "Indicates failure"
14113+
},
14114+
"error": {
14115+
"type": "string",
14116+
"description": "Error message detailing what went wrong"
14117+
}
14118+
},
14119+
"required": [
14120+
"success",
14121+
"error"
14122+
],
14123+
"description": "Forbidden - Insufficient permissions or not a team member"
14124+
}
14125+
}
14126+
}
14127+
},
14128+
"404": {
14129+
"description": "Not Found - Request does not exist or does not belong to specified installation",
14130+
"content": {
14131+
"application/json": {
14132+
"schema": {
14133+
"type": "object",
14134+
"properties": {
14135+
"success": {
14136+
"type": "boolean",
14137+
"default": false,
14138+
"description": "Indicates failure"
14139+
},
14140+
"error": {
14141+
"type": "string",
14142+
"description": "Error message detailing what went wrong"
14143+
}
14144+
},
14145+
"required": [
14146+
"success",
14147+
"error"
14148+
],
14149+
"description": "Not Found - Request does not exist or does not belong to specified installation"
14150+
}
14151+
}
14152+
}
14153+
},
14154+
"500": {
14155+
"description": "Internal Server Error",
14156+
"content": {
14157+
"application/json": {
14158+
"schema": {
14159+
"type": "object",
14160+
"properties": {
14161+
"success": {
14162+
"type": "boolean",
14163+
"default": false,
14164+
"description": "Indicates failure"
14165+
},
14166+
"error": {
14167+
"type": "string",
14168+
"description": "Error message detailing what went wrong"
14169+
}
14170+
},
14171+
"required": [
14172+
"success",
14173+
"error"
14174+
],
14175+
"description": "Internal Server Error"
14176+
}
14177+
}
14178+
}
14179+
}
14180+
}
14181+
}
14182+
},
1393314183
"/api/teams/{teamId}/mcp/installations/{installationId}/settings": {
1393414184
"patch": {
1393514185
"summary": "Update installation settings",
@@ -14259,7 +14509,7 @@
1425914509
"tags": [
1426014510
"MCP Installations"
1426114511
],
14262-
"description": "Real-time request logs stream via Server-Sent Events. Sends initial snapshot then streams new requests as they arrive. Includes tool_name, tool_params, tool_response, timing, and success status. Supports same filtering as REST endpoint. Connection automatically reconnects on disconnect.",
14512+
"description": "Real-time request logs stream via Server-Sent Events. Sends initial snapshot then streams new requests as they arrive. Includes tool_name, tool_params, timing, and success status. Does NOT include tool_response (use single request endpoint to get full response). Supports same filtering as REST endpoint. Connection automatically reconnects on disconnect.",
1426314513
"parameters": [
1426414514
{
1426514515
"schema": {

0 commit comments

Comments
 (0)