fix(api): document /v1/contributors/:login/watches in OpenAPI spec - #9410
fix(api): document /v1/contributors/:login/watches in OpenAPI spec#9410nghetien wants to merge 1 commit into
Conversation
Adds WatchSubscription* schemas and registers GET/POST/DELETE paths for the watch-subscription REST endpoints, mirroring watchIssuesOutputSchema from the MCP tool, and regenerates apps/loopover-ui/public/openapi.json. Closes JSONbored#9306
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-27 16:52:44 UTC
Review summary Nits — 4 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. Scroll preview
A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9410 +/- ##
==========================================
+ Coverage 75.46% 75.59% +0.13%
==========================================
Files 275 277 +2
Lines 58030 58361 +331
Branches 6199 6206 +7
==========================================
+ Hits 43790 44120 +330
Misses 13970 13970
- Partials 270 271 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
|
|
This pull request changes UI/visual code but its screenshot evidence is incomplete. Every required viewport × theme combination needs its own before/after image pair in a labeled table row (e.g. "Desktop · Light | before | after"). Still missing: Desktop · Dark, Tablet · Dark, Mobile · Dark. Please resubmit with the remaining rows filled in. See https://github.com/JSONbored/loopover/blob/main/.claude/skills/contributing-to-loopover/SKILL.md for the exact format and examples. This is an automated maintenance action. |
JSONbored
left a comment
There was a problem hiding this comment.
Re-opened to re-review, but merge conflicts so re-closing.
This branch has conflicts that must be resolved
Use the web editor or the command line to resolve conflicts before continuing.
apps/loopover-ui/public/openapi.json


Summary
/v1/contributors/:login/watches(GET/POST/DELETE) was implemented and validated at runtime but missing from the OpenAPI spec, soapps/loopover-ui/public/openapi.jsonand generated clients had no record of it.WatchSubscriptionSchema,WatchSubscriptionListSchema,WatchSubscriptionChangeSchema, andWatchSubscriptionRequestSchematosrc/openapi/schemas.ts, mirroring the shape already validated by the MCP tool'swatchIssuesOutputSchema(src/mcp/server.ts).src/openapi/spec.tsfollowing the pattern of the neighboring/v1/contributors/{login}/notificationsand/notifications/readpaths (same security scheme, same 400/403 documentation style).apps/loopover-ui/public/openapi.jsonvianpm run ui:openapi.Closes #9306
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #9306).Validation
git diff --checknpm run actionlint(no workflow files changed; skipped)npm run typecheck(via engine/mcp/miner builds + vitest typecheck path)npm run test:coverage— ran targeted +vitest run --changed=upstream/main(134 files, 1723 tests passed); src/openapi/** changes are fully covered by the new/updated assertions in test/unit/openapi.test.tsnpm run test:workers(not run this session; change does not touch Workers-specific code)npm run build:mcp(ranturbo run build --filter=@loopover/mcpdirectly instead — passed)npm run test:mcp-pack(not run this session; no MCP tool surface changed)npm run ui:openapi:checknpm run ui:lint(not run; no UI source files changed, only the generatedopenapi.json)npm run ui:typecheck(not run; no UI source files changed)npm run ui:build(not run; no UI source files changed)npm audit --audit-level=moderate(not run this session)test/unit/openapi.test.tspinning all three verbs and their response/request$refschema names.If any required check was skipped, explain why:
ui:openapi:check(the check that directly gates this diff) was run and passes.Safety
openapi.json.)UI Evidencesection below with JPG/JPEG or PNG screenshots. (N/A — no visible UI/frontend change; this is a backend OpenAPI-spec-only documentation change.)Notes
src/api/routes.ts— they already implement and validate GET/POST/DELETE/v1/contributors/:login/watchescorrectly; this PR only adds the missing OpenAPI documentation layer.