Katalog Event
Halaman ini mendaftar semua event yang bisa Anda langgani, kapan event itu terkirim, dan isi datanya.
Amplop (envelope)
Setiap event dikirim sebagai JSON dengan bentuk yang sama:
{
"id": "evt_9c1f0b6a2d4e8f7a3b5c1d09",
"type": "order.paid",
"api_version": "2026-10-01",
"created_at": "2026-10-11T03:04:05.123Z",
"shop_id": 12,
"data": { "order": { } }
}
| Kolom | Arti |
|---|---|
id | ID unik event. Tetap sama pada percobaan ulang dan pengiriman ulang |
type | Jenis event, lihat tabel di bawah |
api_version | Versi bentuk data |
created_at | Waktu event dibuat (UTC) |
shop_id | ID toko Anda |
data | Isi event; kuncinya tergantung jenis event |
Daftar event
| Event | Terkirim saat | Kunci data |
|---|---|---|
order.created | Pesanan dibuat (checkout storefront, penjualan POS, pesanan booking atau sewa) | order |
order.paid | Status menjadi Dibayar (juga saat dibuat jika langsung dibayar, misalnya tunai di POS) | order |
order.canceled | Status menjadi Dibatalkan (stok, kupon, dan poin sudah dikembalikan) | order |
order.expired | Pesanan belum dibayar dan kedaluwarsa | order |
order.status_changed | Setiap perubahan status (bukan saat dibuat): Dibayar, Dikirim, Selesai, Dibatalkan, Kedaluwarsa | order, dengan previous_status |
refund.created | Refund dicatat | refund |
stock.low | Item turun sampai atau di bawah titik pesan ulang (sekali per item, cabang, dan hari; aturan sama dengan peringatan di aplikasi) | item |
stock.adjusted | Pergerakan stok: penyesuaian manual, opname, transfer cabang, penerimaan pembelian (bukan penjualan) | adjustments[] |
purchase_order.received | Barang diterima untuk sebuah PO | purchase_order, receipt |
booking.created | Slot booking dibuat | booking |
booking.rescheduled | Booking dipindah | booking, dengan previous (tanggal dan jam lama) |
booking.canceled | Booking dibatalkan | booking |
booking.no_show | Booking ditandai tidak datang (manual atau otomatis) | booking |
review.created | Pelanggan mengirim ulasan (status moderasi apa pun; kolom status berisi PUBLISHED atau PENDING) | review |
customer.created | Pelanggan mendaftar atau dibuat oleh staf | customer |
product.created | Produk dibuat | product |
product.updated | Ada perubahan bermakna: nama, deskripsi, kategori, harga, diskon, grosir, status, SKU, barcode, berat, penanda, titik pesan ulang, mode stok, kolom sewa. Tidak termasuk hitungan stok, cap waktu, dan urutan gambar | product |
product.deleted | Produk dihapus | product (id, nama, SKU, deleted_at) |
webhook.test | Hanya dari tombol tes; tidak bisa dilangganan | order (contoh) |
Memilih ["*"] (Semua event) berarti semua event di atas, termasuk yang baru.
Contoh: order.paid
{
"order": {
"id": 1001,
"sales_no": "INV-0001",
"status": "PAID",
"branch_id": 1,
"customer": { "id": 9, "fullname": "Sari", "email": "sari@example.com", "phone": "08123456789" },
"items": [
{
"id": 5001, "product_id": 77, "product_variant_id": null,
"product_name": "Kopi 250g", "variant_name": null, "sku": "KOPI-250",
"qty": 2, "price": 50000, "total_price": 100000, "notes": null, "refunded_qty": 0,
"booking_date": null, "rental_start_date": null, "rental_end_date": null
}
],
"subtotal": 100000, "coupon_price": 0, "delivery_fee": 10000, "fee": 0,
"tax_amount": 0, "service_charge_amount": 0, "points_spend": 0,
"grand_total": 110000, "refunded_amount": 0, "refund_status": null,
"delivery_address": null, "deposit_amount": 0, "deposit_status": null, "balance_due": 0,
"created_at": "2026-10-11T03:00:00.000Z",
"updated_at": "2026-10-11T03:04:05.000Z"
}
}
Isi di atas adalah nilai data. Pada order.status_changed, bentuknya sama ditambah "previous_status": "PAYMENT-WAITING" di dalam order.
Yang tidak pernah dikirim
- password, salt, token, atau hash apa pun
- data modal (
cost_price, nilai modal, margin) di event mana pun - metadata payment gateway
- data pelanggan hanya id, nama, email, dan telepon
Sistem juga menyaring kunci terlarang di seluruh dokumen sebagai lapis pengaman terakhir.
Urutan dan duplikat
- Urutan antar-event tidak dijamin. Misalnya dua event yang berdekatan bisa tiba terbalik. Gunakan cap waktu di data, bukan urutan kedatangan.
- Event bisa tiba lebih dari sekali. Simpan
idevent yang sudah diproses dan abaikan yang sama. idtetap sama pada percobaan ulang, pengiriman ulang, dan replay. HeaderX-Etalasse-Delivery-Idberbeda tiap pengiriman, jadi jangan dipakai untuk menghapus duplikat.
Header yang dikirim
| Header | Isi |
|---|---|
X-Etalasse-Event-Id | ID event |
X-Etalasse-Event-Type | Jenis event |
X-Etalasse-Delivery-Id | ID pengiriman |
X-Etalasse-Attempt | Percobaan ke berapa (mulai 1) |
X-Etalasse-Signature | Tanda tangan, lihat Verifikasi tanda tangan |
User-Agent | Etalasse-Webhooks/1.0 |
Body dikirim sebagai Content-Type: application/json; charset=utf-8, JSON ringkas, dengan ukuran jauh di bawah 256 KB.