Skip to main content

Projects API

List projects

GET /api/projects
Headers: X-Tenant-ID: t_default (optional)
Query: ?tenantId=default (optional)
Response: 200 OK → [ { id, tenant_id, name, description, repo_url, status, created_at, updated_at } ]

Create project

POST /api/projects
Body: { name: string, description?: string, repo_url?: string }
Response: 200 OK → created project row

Get project

GET /api/projects/:id
Response: 200 OK → project row | 404 Not Found

Update project

PUT /api/projects/:id
Body: { name?, description?, repo_url?, status? }
Response: 200 OK → updated project row

Delete or archive project

DELETE /api/projects/:id?hard=true
Response: 204 No Content

Notes:

  • Archived projects are hidden from list; use status filter via direct SQL if needed.
  • Default tenant resolution uses tenants.slug = 'default'.