Base URL: https://task.masmuf.cloud/api/v1 · Media: application/json · Kontrak: v1.2
State Machine
backlog→
todo→
on_progress→
done
Boleh maju/mundur 1 langkah. Nilai lain → 400.
Objek Task
{// semua field pada response
"id": 3,
"title": "Implementasi fitur X",
"description": "Detail task",
"state": "todo", // backlog|todo|on_progress|done
"instansi": "pribadi", // kantor|pribadi
"app_name": "mas-dana",
"service_name": "api",
"category": "new_feature", // bug_fix|new_feature
"created_at": "2026-08-28T07:47:28.865839+00:00",
"updated_at": "2026-08-28T08:10:00.000000+00:00"
}
Endpoint
GET/api/v1/states
Daftar state valid.
# Response 200
{ "states": ["backlog", "todo", "on_progress", "done"] }
GET/api/v1/tasks
List task. Semua filter opsional & bisa dikombinasi (AND):
| Param | Aturan |
|---|---|
state | ∈ 4 state, selain itu 400 |
instansi | ∈ kantor/pribadi, selain itu 400 |
category | ∈ bug_fix/new_feature, selain itu 400 |
app_name | partial match (ILIKE) |
service_name | partial match (ILIKE) |
search | case-insensitive pada title/description |
# Contoh filter
curl "https://task.masmuf.cloud/api/v1/tasks?instansi=kantor&category=bug_fix"
curl "https://task.masmuf.cloud/api/v1/tasks?state=backlog&app_name=mas-dana"
POST/api/v1/tasks
Buat task. title wajib; state default backlog; instansi default pribadi; category default new_feature. Response 201.
curl -X POST https://task.masmuf.cloud/api/v1/tasks \
-H "Content-Type: application/json" \
-d '{"title":"Implementasi fitur X","description":"Detail","state":"todo","instansi":"kantor","category":"new_feature"}'
PATCH/api/v1/tasks/{id}
Update / pindah state. Semua field opsional, minimal 1. Idempoten.
# Pindah ke on_progress (paling sering dipakai AI agent)
curl -X PATCH https://task.masmuf.cloud/api/v1/tasks/3 \
-H "Content-Type: application/json" \
-d '{"state":"on_progress"}'
DELETE/api/v1/tasks/{id}
Hapus task. Response {"deleted": true, "id": N}; id tak ada → 404.
curl -X DELETE https://task.masmuf.cloud/api/v1/tasks/3
Kode Error
| Kode | Kondisi | Body |
|---|---|---|
| 400 | validasi gagal / title kosong / state tak dikenal / tanpa field | {"error":"..."} |
| 404 | task tidak ditemukan | {"error":"task tidak ditemukan"} |
| 405 | method tidak diizinkan | — |
| 500 | error internal | — |
🤖 Panduan AI Agent (Claude Code / Hermes)
- Baca antrian:
GET /api/v1/tasks?state=backlog(+?state=todo) - Ambil task:
PATCH {id}→{"state":"on_progress"} - Selesai:
PATCH {id}→{"state":"done"}+ tulis ringkasan didescription - Hapus hanya task basi/duplikat — jangan hapus task orang lain tanpa konfirmasi
Kontrak lengkap + assertion test: file
API.md di repo (/root/project/task-manager/API.md). Tanpa auth saat ini — hubungi mas mufid jika butuh proteksi API key.