Skip to content

Commit 7aa9043

Browse files
author
Lasim
committed
feat(backend): add MCP Registry sync management endpoints and logic
1 parent 023c005 commit 7aa9043

File tree

13 files changed

+924
-32
lines changed

13 files changed

+924
-32
lines changed

services/backend/api-spec.json

Lines changed: 323 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25054,6 +25054,329 @@
2505425054
}
2505525055
}
2505625056
},
25057+
"/api/admin/mcp-registry/progress/{batchId}": {
25058+
"get": {
25059+
"summary": "Get detailed sync progress for batch",
25060+
"tags": [
25061+
"Admin - MCP Registry"
25062+
],
25063+
"description": "Get real-time progress, job status, and error details for MCP Registry sync batch",
25064+
"parameters": [
25065+
{
25066+
"schema": {
25067+
"type": "string"
25068+
},
25069+
"in": "path",
25070+
"name": "batchId",
25071+
"required": true,
25072+
"description": "Job batch ID"
25073+
}
25074+
],
25075+
"security": [
25076+
{
25077+
"cookieAuth": []
25078+
}
25079+
],
25080+
"responses": {
25081+
"200": {
25082+
"description": "Default Response",
25083+
"content": {
25084+
"application/json": {
25085+
"schema": {
25086+
"type": "object",
25087+
"properties": {
25088+
"success": {
25089+
"type": "boolean"
25090+
},
25091+
"data": {
25092+
"type": "object",
25093+
"properties": {
25094+
"batch": {
25095+
"type": "object",
25096+
"description": "Batch information"
25097+
},
25098+
"progress": {
25099+
"type": "object",
25100+
"properties": {
25101+
"total": {
25102+
"type": "number"
25103+
},
25104+
"completed": {
25105+
"type": "number"
25106+
},
25107+
"failed": {
25108+
"type": "number"
25109+
},
25110+
"pending": {
25111+
"type": "number"
25112+
},
25113+
"processing": {
25114+
"type": "number"
25115+
},
25116+
"percentage": {
25117+
"type": "number"
25118+
}
25119+
}
25120+
},
25121+
"recentJobs": {
25122+
"type": "array",
25123+
"description": "Recent jobs in batch (last 10)"
25124+
},
25125+
"errors": {
25126+
"type": "array",
25127+
"description": "Failed jobs with error details"
25128+
},
25129+
"estimatedTimeRemaining": {
25130+
"type": "number",
25131+
"nullable": true,
25132+
"description": "Estimated milliseconds until completion"
25133+
}
25134+
}
25135+
}
25136+
}
25137+
}
25138+
}
25139+
}
25140+
},
25141+
"500": {
25142+
"description": "Default Response",
25143+
"content": {
25144+
"application/json": {
25145+
"schema": {
25146+
"type": "object",
25147+
"properties": {
25148+
"success": {
25149+
"type": "boolean"
25150+
},
25151+
"error": {
25152+
"type": "string"
25153+
}
25154+
}
25155+
}
25156+
}
25157+
}
25158+
}
25159+
}
25160+
}
25161+
},
25162+
"/api/admin/mcp-registry/cancel/{batchId}": {
25163+
"post": {
25164+
"summary": "Cancel active sync batch",
25165+
"tags": [
25166+
"Admin - MCP Registry"
25167+
],
25168+
"description": "Cancel an active MCP Registry sync batch and all pending jobs",
25169+
"parameters": [
25170+
{
25171+
"schema": {
25172+
"type": "string"
25173+
},
25174+
"in": "path",
25175+
"name": "batchId",
25176+
"required": true,
25177+
"description": "Job batch ID to cancel"
25178+
}
25179+
],
25180+
"security": [
25181+
{
25182+
"cookieAuth": []
25183+
}
25184+
],
25185+
"responses": {
25186+
"200": {
25187+
"description": "Default Response",
25188+
"content": {
25189+
"application/json": {
25190+
"schema": {
25191+
"type": "object",
25192+
"properties": {
25193+
"success": {
25194+
"type": "boolean"
25195+
},
25196+
"message": {
25197+
"type": "string"
25198+
},
25199+
"data": {
25200+
"type": "object",
25201+
"properties": {
25202+
"batchId": {
25203+
"type": "string"
25204+
},
25205+
"cancelledJobs": {
25206+
"type": "number"
25207+
}
25208+
}
25209+
}
25210+
}
25211+
}
25212+
}
25213+
}
25214+
},
25215+
"500": {
25216+
"description": "Default Response",
25217+
"content": {
25218+
"application/json": {
25219+
"schema": {
25220+
"type": "object",
25221+
"properties": {
25222+
"success": {
25223+
"type": "boolean"
25224+
},
25225+
"error": {
25226+
"type": "string"
25227+
}
25228+
}
25229+
}
25230+
}
25231+
}
25232+
}
25233+
}
25234+
}
25235+
},
25236+
"/api/admin/mcp-registry/retry/{batchId}": {
25237+
"post": {
25238+
"summary": "Retry failed jobs in batch",
25239+
"tags": [
25240+
"Admin - MCP Registry"
25241+
],
25242+
"description": "Retry all failed jobs in an MCP Registry sync batch",
25243+
"parameters": [
25244+
{
25245+
"schema": {
25246+
"type": "string"
25247+
},
25248+
"in": "path",
25249+
"name": "batchId",
25250+
"required": true,
25251+
"description": "Job batch ID to retry failed jobs"
25252+
}
25253+
],
25254+
"security": [
25255+
{
25256+
"cookieAuth": []
25257+
}
25258+
],
25259+
"responses": {
25260+
"200": {
25261+
"description": "Default Response",
25262+
"content": {
25263+
"application/json": {
25264+
"schema": {
25265+
"type": "object",
25266+
"properties": {
25267+
"success": {
25268+
"type": "boolean"
25269+
},
25270+
"message": {
25271+
"type": "string"
25272+
},
25273+
"data": {
25274+
"type": "object",
25275+
"properties": {
25276+
"batchId": {
25277+
"type": "string"
25278+
},
25279+
"retriedJobs": {
25280+
"type": "number"
25281+
}
25282+
}
25283+
}
25284+
}
25285+
}
25286+
}
25287+
}
25288+
},
25289+
"500": {
25290+
"description": "Default Response",
25291+
"content": {
25292+
"application/json": {
25293+
"schema": {
25294+
"type": "object",
25295+
"properties": {
25296+
"success": {
25297+
"type": "boolean"
25298+
},
25299+
"error": {
25300+
"type": "string"
25301+
}
25302+
}
25303+
}
25304+
}
25305+
}
25306+
}
25307+
}
25308+
}
25309+
},
25310+
"/api/admin/mcp-registry/batches": {
25311+
"get": {
25312+
"summary": "Get recent sync batches",
25313+
"tags": [
25314+
"Admin - MCP Registry"
25315+
],
25316+
"description": "Get recent MCP Registry sync operations with progress information",
25317+
"parameters": [
25318+
{
25319+
"schema": {
25320+
"type": "number",
25321+
"minimum": 1,
25322+
"maximum": 50,
25323+
"default": 10
25324+
},
25325+
"in": "query",
25326+
"name": "limit",
25327+
"required": false,
25328+
"description": "Number of batches to return"
25329+
}
25330+
],
25331+
"security": [
25332+
{
25333+
"cookieAuth": []
25334+
}
25335+
],
25336+
"responses": {
25337+
"200": {
25338+
"description": "Default Response",
25339+
"content": {
25340+
"application/json": {
25341+
"schema": {
25342+
"type": "object",
25343+
"properties": {
25344+
"success": {
25345+
"type": "boolean"
25346+
},
25347+
"data": {
25348+
"type": "array",
25349+
"items": {
25350+
"type": "object",
25351+
"description": "Batch information with progress"
25352+
}
25353+
}
25354+
}
25355+
}
25356+
}
25357+
}
25358+
},
25359+
"500": {
25360+
"description": "Default Response",
25361+
"content": {
25362+
"application/json": {
25363+
"schema": {
25364+
"type": "object",
25365+
"properties": {
25366+
"success": {
25367+
"type": "boolean"
25368+
},
25369+
"error": {
25370+
"type": "string"
25371+
}
25372+
}
25373+
}
25374+
}
25375+
}
25376+
}
25377+
}
25378+
}
25379+
},
2505725380
"/api/gateway/me/mcp-configurations": {
2505825381
"get": {
2505925382
"summary": "Get merged MCP configurations for gateway",

0 commit comments

Comments
 (0)