{"openapi":"3.1.0","info":{"title":"Upgrade Atelier API","version":"1.1.0","description":"Explainable npm upgrade dossiers with persisted watch records, live release metadata, MCP tools, and replayable audit seals.","license":{"name":"MIT","url":"https://github.com/aniruddhaadak80/upgrade-atelier/blob/main/LICENSE"},"externalDocs":{"description":"Repository and project passport","url":"https://github.com/aniruddhaadak80/upgrade-atelier"}},"servers":[{"url":"https://upgrade-atelier.vercel.app","description":"Current deployment"}],"tags":[{"name":"dossiers","description":"Persisted upgrade records"},{"name":"evidence","description":"Registry and analysis evidence"},{"name":"integrity","description":"Audit chain verification"},{"name":"agent","description":"MCP-style JSON-RPC tools"}],"paths":{"/api/health":{"get":{"tags":["integrity"],"summary":"Check storage and audit health","responses":{"200":{"description":"Healthy service state","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/project":{"get":{"tags":["evidence"],"summary":"Read public GitHub project metadata","responses":{"200":{"description":"Repository, topics, and live links","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/feed":{"get":{"tags":["evidence"],"summary":"Read normalized npm release signals","responses":{"200":{"description":"Live or explicitly labeled fallback feed","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/analyze":{"post":{"tags":["evidence"],"summary":"Analyze an npm upgrade without saving","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["packageName","currentVersion"],"properties":{"packageName":{"type":"string"},"currentVersion":{"type":"string"}}}}}},"responses":{"200":{"description":"Score, factors, and analysis seal","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Package not found","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/engine":{"get":{"tags":["evidence"],"summary":"Read the versioned scoring policy","responses":{"200":{"description":"Weights, bands, cooldown, and evidence contract","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/items":{"get":{"tags":["dossiers"],"summary":"List persisted watch records","responses":{"200":{"description":"Current dossier collection","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["dossiers"],"summary":"Create a persisted watch record","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["packageName","currentVersion"],"properties":{"packageName":{"type":"string"},"currentVersion":{"type":"string"},"note":{"type":"string"},"status":{"type":"string","enum":["watching","ready","paused"]}}}}}},"responses":{"201":{"description":"Created dossier","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/items/{id}":{"get":{"tags":["dossiers"],"summary":"Read one persisted dossier","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dossier","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object"}}}}}},"patch":{"tags":["dossiers"],"summary":"Update, refresh, or annotate a dossier","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentVersion":{"type":"string"},"note":{"type":"string"},"status":{"type":"string","enum":["watching","ready","paused"]},"refresh":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Updated dossier","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"tags":["dossiers"],"summary":"Delete a dossier and preserve its audit event","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted dossier identifier","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/audit/verify":{"get":{"tags":["integrity"],"summary":"Replay the SHA-384 mutation chain","responses":{"200":{"description":"Chain verification result","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/export":{"get":{"tags":["dossiers"],"summary":"Export a Markdown or JSON dossier brief","parameters":[{"name":"format","in":"query","schema":{"type":"string","enum":["markdown","json"]}}],"responses":{"200":{"description":"Export document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mcp":{"get":{"tags":["agent"],"summary":"Discover the MCP transport, tools, resources, and OpenAPI document","responses":{"200":{"description":"MCP discovery document","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["agent"],"summary":"Execute MCP-style JSON-RPC methods","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{},"method":{"type":"string","enum":["initialize","tools/list","tools/call","resources/list","resources/read"]},"params":{"type":"object"}}}}}},"responses":{"200":{"description":"JSON-RPC result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"JSON-RPC error","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"WatchItem":{"type":"object","required":["id","packageName","analysis","seal"],"properties":{"id":{"type":"string"},"packageName":{"type":"string"},"analysis":{"$ref":"#/components/schemas/UpgradeAnalysis"},"seal":{"type":"string","description":"SHA-384 record seal"}}},"UpgradeAnalysis":{"type":"object","required":["score","band","factors","migrationSteps"],"properties":{"score":{"type":"integer","minimum":0,"maximum":100},"band":{"type":"string","enum":["low","watch","review","hold"]},"factors":{"type":"array","items":{"type":"object"}},"migrationSteps":{"type":"array","items":{"type":"string"}}}},"ProjectMetadata":{"type":"object","required":["repoUrl","liveUrl","topics"],"properties":{"repoUrl":{"type":"string","format":"uri"},"liveUrl":{"type":"string","format":"uri"},"topics":{"type":"array","items":{"type":"string"}},"stars":{"type":"integer"},"forks":{"type":"integer"},"openIssues":{"type":"integer"}}}}},"externalDocs":{"description":"Upgrade Atelier GitHub repository","url":"https://github.com/aniruddhaadak80/upgrade-atelier"}}