- Basic rate limit + CORS config.
- Basic structured audit logging per request (method/path/status/duration).
Acceptance criteria
- 401/403 pada request tanpa/invalid key.
- Konfigurasi key dari env + DB optional for rollout.
- Audit log menulis event untuk semua request API.
Depends on: Daemon Mode Architecture
API CRUD: Provider Accounts & Payments
Tujuan: Buat endpoint CRUD inti untuk data pembayaran.
Deliverables
POST/GET/PUT/DELETE /api/v1/provider-accounts
POST /api/v1/payments (Create), GET /api/v1/payments, GET /api/v1/payments/{reference}.
POST /api/v1/payments/{reference}/refund, GET /api/v1/payments/{reference}/status.
- idempotency-key support untuk create/refund.
Acceptance criteria
- CRUD provider account berhasil (list/filter/create/update/delete).
- Flow create/pay status/refund bisa diakses dari API dengan efek yang sama seperti CLI.
- Penyimpanan raw JSON tetap terjadi untuk request/response.
Depends on: API Security & Infrastructure, Daemon Mode Architecture
Webhook Event API & Diagnostics
Tujuan: API untuk observability dan operasi rekonsiliasi.
Deliverables
GET /api/v1/webhook-events + GET /api/v1/webhook-events/{id}.
GET /api/v1/webhook-events/{id}/forwarding-attempts.
POST /api/v1/webhook-events/{id}/replay.
Acceptance criteria
- Bisa lihat event terbaru dengan filter provider/status/signature_valid.
Acceptance criteria
Depends on: Daemon Mode Architecture
API CRUD: Provider Accounts & Payments
Tujuan: Buat endpoint CRUD inti untuk data pembayaran.
Deliverables
POST/GET/PUT/DELETE /api/v1/provider-accountsPOST /api/v1/payments(Create),GET /api/v1/payments,GET /api/v1/payments/{reference}.POST /api/v1/payments/{reference}/refund,GET /api/v1/payments/{reference}/status.Acceptance criteria
Depends on: API Security & Infrastructure, Daemon Mode Architecture
Webhook Event API & Diagnostics
Tujuan: API untuk observability dan operasi rekonsiliasi.
Deliverables
GET /api/v1/webhook-events+GET /api/v1/webhook-events/{id}.GET /api/v1/webhook-events/{id}/forwarding-attempts.POST /api/v1/webhook-events/{id}/replay.Acceptance criteria