Skip to content

feat(client): close the 8 reports-family REST gaps (#3587 batch 2/5) - #3626

Merged
os-zhuang merged 1 commit into
mainfrom
claude/screen-flow-submit-resume-v9dqjx
Jul 27, 2026
Merged

feat(client): close the 8 reports-family REST gaps (#3587 batch 2/5)#3626
os-zhuang merged 1 commit into
mainfrom
claude/screen-flow-submit-resume-v9dqjx

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Second of five batches closing the 43 REST↔client gaps the #3587 ledger carries. Batch 1 (metadata 9, #3625) is merged; this batch: the reports family, 8 gaps → 0. Ratchet 34 → 26.

New client.reports namespace

Speaks the plugin-reports REST surface exactly as rest-server.ts#registerReportsEndpoints mounts it; every route 501s [NOT_IMPLEMENTED] on deployments without the reports service. Fixed path — /api/v1/reports is not in ApiRoutesSchema, same precedent as keys / shareLinks (#3575).

Method Route Notes
list({object?, ownerId?}) GET /reports unwraps the {data} envelope
save(report) POST /reports upsert; 400 [VALIDATION_FAILED] on a bad spec
get(id) GET /reports/:id 404 [REPORT_NOT_FOUND]
delete(id) DELETE /reports/:id schedules cascade; 204-safe
run(id) POST /reports/:id/run rendered output
schedule(id, opts) POST /reports/:id/schedule recipients + intervalMinutes/cronExpression
listSchedules(id) GET /reports/:id/schedules unwraps {data}
unschedule(scheduleId) DELETE /reports/schedules/:scheduleId 204-safe

204-safe matters: unwrapResponse parses JSON unconditionally, and both DELETE routes return 204 No Content — the new methods short-circuit to { deleted: true } before any parse, and the tests feed a body-less 204 mock that throws on json() to prove it.

Ledger & docs

  • 8 reports rows gapsdk; two-sided conformance guard proves each method exists.
  • Ratchet comment updated with the per-family remainder (data-actions 2, search 1, email 1, analytics 1, security-explain 2, record-shares 3, sharing-rules 5, approvals 6, external-datasource 5).
  • client-sdk.mdx surface table gains the reports row.

Verification

  • @objectstack/client: 144/144 (+6 URL-pinning tests), bare tsc clean.
  • @objectstack/rest: 394/394 (guard green at ratchet 26).
  • Changeset: client minor, rest patch.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5


Generated by Claude Code

New client.reports namespace speaking the plugin-reports REST surface:
list / save / get / delete (schedules cascade), run, schedule,
listSchedules, unschedule — each URL-pinned in client.test.ts. The two
DELETE routes return 204; the client methods return { deleted: true }
without parsing the empty body. Fixed path (/api/v1/reports is not in
ApiRoutesSchema), matching the keys / share-links precedent.

Ledger: 8 reports rows gap→sdk; ratchet 34→26. client-sdk.mdx surface
table gains the reports row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 27, 2026 11:02am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tests tooling size/m and removed documentation Improvements or additions to documentation tests tooling labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/client, @objectstack/rest.

18 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/skills-reference.mdx (via packages/client)
  • content/docs/api/client-sdk.mdx (via @objectstack/client)
  • content/docs/api/data-flow.mdx (via @objectstack/client)
  • content/docs/api/environment-routing.mdx (via @objectstack/client)
  • content/docs/api/error-catalog.mdx (via @objectstack/client, @objectstack/rest)
  • content/docs/api/error-handling-server.mdx (via @objectstack/rest)
  • content/docs/api/index.mdx (via @objectstack/rest)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/client)
  • content/docs/kernel/runtime-services/data-service.mdx (via packages/client)
  • content/docs/kernel/runtime-services/index.mdx (via packages/client)
  • content/docs/permissions/authentication.mdx (via @objectstack/client)
  • content/docs/plugins/index.mdx (via @objectstack/rest)
  • content/docs/plugins/packages.mdx (via @objectstack/client, @objectstack/rest)
  • content/docs/protocol/kernel/i18n-standard.mdx (via packages/rest)
  • content/docs/protocol/kernel/realtime-protocol.mdx (via @objectstack/client)
  • content/docs/releases/implementation-status.mdx (via @objectstack/client, @objectstack/rest)
  • content/docs/releases/v12.mdx (via @objectstack/rest)
  • content/docs/releases/v16.mdx (via @objectstack/client)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants