vyvoj-dash

API Endpoints

Base URL: https://dash.vyvoj.dev · 56 endpoints

Projects (5)

Method Path Description Body Response
GET /api/projects/ List all projects -- { data: Project[] }
POST /api/projects/ Create project { id, name, repo, color? } { data: Project }
GET /api/projects/:id Get project detail -- { data: Project }
PATCH /api/projects/:id Update project { name?, cfWorkerName?, cfAccountId?, cfBindings? } { data: Project }
GET /api/projects/:id/bugs List open bugs -- { data: Bug[], count }

Sessions & Checklists (7)

Method Path Description Body Response
GET /api/sessions/ List sessions -- { data: Session[] }
POST /api/sessions/ Create session { projectId, branch, commit?, description? } { data: Session }
PATCH /api/sessions/:id Update session status { status } { data: { id, status } }
GET /api/checklists/ List checklist items -- { data: ChecklistItem[] }
POST /api/checklists/ Create checklist items { sessionId, items: { label, category? }[] } { data: { sessionId, count } }
PUT /api/checklists/ Update item status { id, status, note? } { data: { id, status } }
PATCH /api/checklists/:id Update item by ID { status, note?, createTask? } { data: { id, status } }

Tasks & Kanban (6)

Method Path Description Body Response
GET /api/tasks/ List tasks (filters: projectId, status, priority, runId) -- { data: Task[] }
POST /api/tasks/ Create task { projectId, title, description?, status?, priority?, labels?, runId? } { data: Task }
GET /api/tasks/:id Get task detail -- { data: Task }
PATCH /api/tasks/:id Update task { title?, status?, priority?, labels?, runId? } { data: Task }
DELETE /api/tasks/:id Delete task -- { data: { id } }
PATCH /api/tasks/bulk Bulk update tasks { ids: string[], status?, runId? } { data: { updated } }

Runs (4)

Method Path Description Body Response
GET /api/runs/ List runs (filter: projectId, status) -- { data: Run[] }
POST /api/runs/ Create run { projectId, name, goal?, status?, startDate?, endDate? } { data: Run }
GET /api/runs/:id Get run detail -- { data: Run }
PATCH /api/runs/:id Update run { name?, goal?, status?, endDate? } { data: Run }

Comments & Activity (3)

Method Path Description Body Response
GET /api/comments/ List comments (filter: taskId) -- { data: Comment[] }
POST /api/comments/ Create comment { taskId, body } { data: Comment }
GET /api/activity/ Activity log (filters: projectId, entityType, action) -- { data: Activity[] }

Attachments (3)

Method Path Description Body Response
GET /api/attachments/ List attachments (filter: checklistItemId) -- { data: Attachment[] }
POST /api/attachments/ Upload attachment (multipart) FormData { file, checklistItemId } { data: Attachment }
DELETE /api/attachments/:id Delete attachment -- { data: { id } }

CF Proxy — Workers & Analytics (7)

Method Path Description Body Response
GET /api/cf/workers List CF workers -- { data: Worker[] }
GET /api/cf/worker-bindings?scriptName= Get worker bindings -- { bindings }
GET /api/cf/analytics-workers?days= Worker metrics (GraphQL) -- { data: Metrics[] }
GET /api/cf/deployments?scriptName= List deployments -- { deployments }
POST /api/cf/deployments Create deployment (redeploy) { scriptName, versionId, message? } { deployment }
POST /api/cf/tail Create tail session { scriptName } { id, url, expiresAt }
DELETE /api/cf/tail?tailId=&scriptName= Delete tail session -- {}

CF Proxy — D1, KV, R2 (13)

Method Path Description Body Response
GET /api/cf/databases List D1 databases -- { data: Database[] }
POST /api/cf/d1-query Execute read query { databaseId, sql } { data: QueryResult }
POST /api/cf/d1-write Execute write query { databaseId, sql } { data: QueryResult }
GET /api/cf/d1-history?databaseId= Get query history -- { data: string[] }
POST /api/cf/d1-history Save query to history { databaseId, sql } { data: string[] }
GET /api/cf/kv-namespaces List KV namespaces -- { data: Namespace[] }
GET /api/cf/kv-keys?namespaceId= List KV keys -- { data: Key[] }
GET /api/cf/kv-value?namespaceId=&key= Get KV value -- { data: { value } }
GET /api/cf/r2-buckets List R2 buckets -- { data: Bucket[] }
GET /api/cf/r2-stats R2 bucket stats (GraphQL) -- { data: BucketStats[] }
GET /api/cf/r2-objects?bucket= List R2 objects -- { data: { objects, truncated, cursor? } }
GET /api/cf/r2-object?bucket=&key= Get R2 object metadata -- { data: Object }
DELETE /api/cf/r2-object?bucket=&key= Delete R2 object -- {}

CF Proxy — DNS (5)

Method Path Description Body Response
GET /api/cf/zones List DNS zones -- { data: Zone[] }
GET /api/cf/zone-records?zoneId= List DNS records -- { data: Record[] }
POST /api/cf/zone-records Create DNS record { zoneId, type, name, content, ttl?, proxied? } { data: Record }
PATCH /api/cf/zone-records Update DNS record { zoneId, recordId, type, name, content, ttl?, proxied? } { data: Record }
DELETE /api/cf/zone-records?zoneId=&recordId= Delete DNS record -- {}

Settings & Health (3)

Method Path Description Body Response
GET /api/settings/ Get current settings -- { data: Settings }
POST /api/settings/ Save settings { key, value } { data: { key } }
GET /api/health/ Health check -- { status: "ok", timestamp }

Error format

All errors return JSON with an error field:

{ "error": "Error message here" }
400 Validation 404 Not found 500 Internal