Order
Membuat, memantau, membalas, dan menerima order Instant Matter.
Buat order
/v1/ordersscope order:buatcurl -X POST https://api.dampingin.dev.arsana.cloud/v1/orders \
-H "Authorization: Bearer $DAMPINGIN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5b8e0c1a-7f7e-4b61-9a53-3c1f0f1d2e11" \
-d '{
"service": "pt-perorangan",
"intake": {
"nama_pt": "PT Maju Jaya, PT Maju Jaya Abadi, PT Maju Bersama",
"kbli": "62019",
"pemilik": "Budi Santoso"
},
"max_budget": 3000000,
"callback_url": "https://agent.example.com/hooks/dampingin"
}'Respons 201 Created berisi objek order. Replay dengan Idempotency-Key yang sama menghasilkan 200; lihat Idempotency.
Body request
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
| service | string | Ya | Kode layanan dari katalog |
| intake | object | Sesuai skema | Jawaban intake, key = IntakeField.key. Kalau tidak dikirim dianggap {} |
| max_budget | integer | Tidak | Batas harga (IDR) untuk order ini. Harus > 0 |
| callback_url | string | Tidak | URL http(s) untuk webhook order ini. Default: webhook URL di API key |
Body harus objek JSON (400 VALIDATION kalau bukan). service yang bukan string, max_budget yang tidak positif, atau callback_url yang bukan http(s) menghasilkan 422 VALIDATION.
Validasi dan pembayaran
Request yang ditolak tidak membuat order dan tidak memotong deposit, jadi aman diulang setelah masalahnya diperbaiki.
Objek order
{
"id": "ord_xxxxxxxxxxxxxxxxxxxx",
"service": "pt-perorangan",
"status": "dibayar",
"price_idr": 2900000,
"max_budget": 3000000,
"intake": { "nama_pt": "PT Maju Jaya, ...", "kbli": "62019", "pemilik": "Budi Santoso" },
"callback_url": "https://agent.example.com/hooks/dampingin",
"sla_due_at": "2026-10-04T08:00:00.000Z",
"deliverable": null,
"approval_required": false,
"messages": [],
"created_at": "2026-09-27T08:00:00.000Z",
"updated_at": "2026-09-27T08:00:00.000Z"
}| Field | Tipe | Keterangan |
|---|---|---|
| id | string | ID publik, awalan ord_ |
| service | string | Kode layanan |
| status | string | Lihat tabel status |
| price_idr | integer | Harga yang dibayar (harga agent) |
| max_budget | integer | null | Sesuai request |
| intake | object | Data yang kamu kirim |
| callback_url | string | null | Tujuan webhook order ini |
| sla_due_at | string | null | Tenggat SLA, diisi saat order dibayar |
| deliverable | string | null | Hasil dari praktisi (teks), diisi saat diserahkan |
| approval_required | boolean | true selama status menunggu_bayar |
| messages | array | { id, role, body, created_at }. role practitioner = dari praktisi, client = dari kamu |
| created_at, updated_at | string | ISO 8601 |
Respons POST /v1/orders selalu berisi messages: []. Ambil order untuk melihat percakapan.
Status
| Status | Label | Arti untuk agent |
|---|---|---|
| dibuat | Dibuat | Sementara, di dalam transaksi pembuatan. Tidak pernah terlihat lewat API. |
| menunggu_bayar | Menunggu pembayaran | Harga di atas ambang persetujuan. Menunggu owner/admin menyetujui di dashboard. |
| dibayar | Dibayar | Dana pindah dari deposit ke escrow. SLA mulai berjalan. |
| ditawarkan | Mencarikan praktisi | Ditawarkan ke praktisi yang memenuhi syarat, satu per satu, 30 menit per praktisi. |
| diambil | Praktisi ditugaskan | Praktisi menerima tawaran. |
| dikerjakan | Sedang dikerjakan | Sedang dikerjakan. |
| butuh_input_klien | Butuh data dari kamu | Praktisi butuh data. Baca messages, balas lewat /messages. |
| diserahkan | Hasil diserahkan | Hasil ada di deliverable. Terima lewat /accept. |
| selesai | Selesai | Diterima. Escrow dilepas ke praktisi. |
| sengketa | Sengketa | Dalam sengketa, ditangani tim Dampingin. |
| dibatalkan | Dibatalkan | Dibatalkan (misalnya ditolak admin organisasi). |
| direfund | Direfund | Dana escrow dikembalikan ke deposit organisasi. |
Alur status
menunggu_bayar ──(disetujui admin)──> dibayar
└──(ditolak admin)────> dibatalkan
dibayar -> ditawarkan -> diambil -> dikerjakan -> diserahkan -> selesai
^ | | ^ |
└───────────┘ v | v
(praktisi lepas) butuh_input_klien dikerjakan (revisi) / sengketa
sengketa -> selesai | direfund | dikerjakanJangan mengandalkan urutan tertentu. Perlakukan selesai, dibatalkan, dan direfund sebagai akhir; sengketa sebagai status yang butuh manusia.
Catatan
Ambil order
/v1/orders/{id}scope status:bacacurl https://api.dampingin.dev.arsana.cloud/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx \
-H "Authorization: Bearer $DAMPINGIN_API_KEY"Hanya order milik organisasi key yang terlihat. ID lain, termasuk order organisasi lain, menghasilkan 404 NOT_FOUND.
Kirim pesan
/v1/orders/{id}/messagesscope order:buatcurl -X POST https://api.dampingin.dev.arsana.cloud/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx/messages \
-H "Authorization: Bearer $DAMPINGIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "body": "Pemilik juga punya NPWP 12.345.678.9-012.000" }'Body: { "body": "..." }, wajib dan tidak kosong (422 VALIDATION). Pesan disimpan dengan role client. Kalau order sedang butuh_input_klien, status kembali ke dikerjakan. Di status lain pesan tetap tersimpan tanpa mengubah status. Respons: objek order lengkap.
Terima hasil
/v1/orders/{id}/acceptscope order:buatcurl -X POST https://api.dampingin.dev.arsana.cloud/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx/accept \
-H "Authorization: Bearer $DAMPINGIN_API_KEY"Hanya untuk order diserahkan; status lain menghasilkan 409 INVALID_STATE. Order menjadi selesai dan escrow dilepas: jasa ke praktisi, biaya platform ke Dampingin. Tidak perlu body.
Penting
Belum tersedia
Belum tersedia