API

Base URL: /api/v1 on the shared backend. Auth with a JWT cookie/Bearer or a personal cr_… token.

Response shape

{ "data": { ... } }
{ "error": { "code": "...", "message": "..." } }

Projects

  • GET /projects: projects you’re a member of
  • POST /projects: { "name": "Web" } (you become owner)
  • GET|PATCH|DELETE /projects/:id
  • GET|POST /projects/:id/cases: query tag, suiteId, limit, cursor
  • GET|POST /projects/:id/suites
  • GET|POST /projects/:id/runs: body { name?, suiteId?, tag?, caseIds? }

Test cases & suites

  • GET|PATCH|DELETE /cases/:id
  • PATCH|DELETE /suites/:id

Runs

  • GET /runs/:id
  • GET /runs/:id/results
  • PATCH /runs/:id/results/:caseId: { "status": "pass"|"fail"|"blocked"|"untested", "note?" }
  • GET /runs/:id/summary

Tokens

  • GET|POST /tokens
  • DELETE /tokens/:id

Example

curl -s http://localhost:8080/api/v1/projects \
  -H "Authorization: Bearer cr_…" 

Next: Agents