Referensi API
Halaman ini adalah peta endpoint utama. Spesifikasi lengkap Go tersedia di apps/api/docs/openapi.yaml dan, saat server berjalan, di /docs/swagger. OpenAPI OCR tersedia di /openapi.json atau Swagger /docs pada port OCR.
Autentikasi Go
POST /api/auth/login dan alias POST /auth/login menerima username serta password:
curl -X POST http://localhost:8082/api/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"<username>","password":"<password>"}'
Respons Go memakai envelope dengan data.token. Untuk route bisnis /api/* gunakan header Authorization: Bearer <token>:
curl http://localhost:8082/api/auth/me \
-H 'Authorization: Bearer <token>'
Kelompok route Go
| Route | Kegunaan | Autentikasi |
|---|---|---|
GET /health, GET /ready | Liveness dan kesiapan DB | Publik |
POST /api/auth/login | Login pengguna | Publik |
GET /api/auth/me | Profil token saat ini | JWT |
/api/memo, /api/memo/inbox/* | Memo dan persetujuan | JWT |
/api/memo/attachment/* | Metadata dan upload lampiran | JWT; route file berdasar ID terpisah dan publik |
/api/bank, /api/company, /api/supplier, /api/employee | Master data | JWT |
/api/notification/*, /api/report/* | Notifikasi dan laporan | JWT |
POST /api/api-key | Membuat API key perusahaan | JWT |
/api/v2/memo | Integrasi memo v2 | X-API-Key |
POST /webhook/ocr | Callback hasil OCR | Bearer token webhook |
Route /api/memo/attachment/file/:id dapat digunakan mengambil lampiran berdasarkan ID. Route baru /api/memo/attachment/file/by-filename/:filename berada di grup JWT.
API key perusahaan
curl -X POST http://localhost:8082/api/api-key \
-H 'Authorization: Bearer <jwt>' \
-H 'Content-Type: application/json' \
-d '{"company_no":"<company_no>","expires_at":"2026-12-31"}'
curl http://localhost:8082/api/v2/memo \
-H 'X-API-Key: <api_key>'
API key mentah ditampilkan ketika dibuat; database menyimpan hash. Tanggal kedaluwarsa menerima YYYY-MM-DD atau RFC3339. company_no harus merujuk perusahaan yang ada.
API OCR
| Route | Kegunaan |
|---|---|
GET /health | Liveness layanan |
POST /api/v1/ocr/process | Membuat job OCR, mengembalikan HTTP 202 |
GET /api/v1/ocr/jobs | Daftar job |
GET /api/v1/ocr/jobs/{job_id} | Status dan hasil job |
POST /api/v1/ocr/jobs/{job_id}/process-local | Helper pemrosesan lokal |
curl -X POST http://localhost:8015/api/v1/ocr/process \
-H 'Authorization: Bearer <SERVICE_AUTH_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"image_url":"http://memo_minio:9000/memos/<object-key>","storage":"s3","source":"web","user_id":"<user_id>","metadata":{}}'
curl http://localhost:8015/api/v1/ocr/jobs/<job_id> \
-H 'Authorization: Bearer <SERVICE_AUTH_TOKEN>'
URL gambar harus dapat dijangkau dari container OCR. Header Bearer diperlukan jika SERVICE_AUTH_TOKEN diisi. Respons job berisi job_id, status, tahap, hasil atau detail kegagalan.