Appearance
Changelog / Release Notes
Semua perubahan penting pada WagWay API (baik backend maupun frontend) akan didokumentasikan di halaman ini. Format changelog mengacu pada Keep a Changelog dan versi mengikuti Semantic Versioning.
Skema versi: WagWay berada di seri 0.x selama fase beta — API masih bisa berubah. Rilis
1.0.0menandai versi stabil pertama setelah rangkaian audit lolos.
[Unreleased]
Tidak ada perubahan yang belum dirilis.
[0.5.0] - 2026-07-18 — Beta Publik
Milestone Beta WagWay menuju stabil 1.0.0. Rilis ini didominasi perombakan model bisnis: dari model per-user berbasis saldo menjadi langganan per-nomor dengan penagihan invoice-per-periode.
⚠️ Breaking — model bisnis berubah total. Model saldo/dompet (top-up) dihapus; penagihan kini berbasis invoice per periode langganan, per nomor. Lihat rincian di bawah.
Model bisnis & langganan
- Langganan per-nomor menjadi satu-satunya model. Model billing per-user lama dicabut — setiap nomor WhatsApp adalah unit langganan & penagihan tersendiri. (#185)
- Alur perangkat baru: Tambah Nomor (gratis) → Order (mulai tagihan) → Hubungkan. Nomor bisa didaftarkan lebih dulu tanpa langsung ditagih; penagihan baru berjalan saat Order. (#204)
- Katalog paket final: Free / Pro / Max. Tier Starter dihapus.
- WagWay Partner — tier khusus dengan harga & rate yang dinegosiasikan per akun.
- Invoice per-periode menggantikan model saldo. Tagihan diterbitkan tiap periode langganan; tidak ada lagi pemotongan saldo otomatis.
- Pembayaran via Midtrans (Snap). Bayar invoice online, lengkap dengan webhook status & rekonsiliasi otomatis.
- Biaya transaksi diserap ke harga paket — tidak lagi dibebankan terpisah ke pengguna.
- Notifikasi email saat nomor disuspend karena invoice belum lunas.
Removed
- Model saldo / dompet / top-up dihapus total (termasuk integrasi Xendit), digantikan invoice-per-periode + Midtrans.
Keamanan & kontrol akses
- Scoping API key — batasi API key per-nomor, atur hak akses, dan tetapkan masa berlaku (expiry). (#193)
Proteksi platform & keandalan
- Cooldown pesan beruntun + batas aksi paralel per nomor — higiene pengiriman untuk menekan risiko pemblokiran nomor.
Portal & pengalaman pengguna
- Alur Tambah Nomor & ganti paket diperbarui menyesuaikan model langganan baru. (#207)
- Dashboard mobile-friendly dengan tema terang/gelap/mengikuti sistem. (#209)
Pesan & webhook
- Daftar kontak (
GET /v1/sessions/{id}/contacts) — kontak dari cache WhatsApp bawaan (tersinkron otomatis sejak nomor terhubung); tidak ada penyimpanan tambahan di sisi WagWay. (#212) - Pesan interaktif / tombol (
type: "interactive") — tombol quick-reply, CTA URL/copy/call, dan list single-select via NativeFlow. Balasan tombol masuk sebagai webhooktype: "button_response". EKSPERIMENTAL & best-effort — format tidak resmi, render tak konsisten antar platform (kerap tak muncul di Android), di luar SLA. Butuh paket Pro+. (#213) - Webhook — Poll masuk (
type: "poll") dengan objekpoll(name,options,selectable_count). CocokkanSHA256(option)denganselected_hashespada eventpoll_voteuntuk memetakan suara ke opsi. (#156) - Webhook — kategori
events_url:poll_vote,typing,presence,callkini punya URL kategori sendiri, terpisah darimessages_url(volume bisa tinggi di grup ramai). Aksi diperlukan: bila Anda sudah memakai event ini viamessages_url, tambahkanevents_url(boleh sama denganmessages_url) agar event ini tetap terkirim. (#216)
Fixed
- Webhook typing/presence/call/poll_vote berhenti terkirim diam-diam setelah event pertama: dedup key untuk keempat event ini sebelumnya selalu kosong (envelope-nya tak punya
message_id), membuat pengiriman pertama ke suatu webhook mengunci pengiriman berikutnya selama 24 jam tanpa error/log. Kini dedup memakai ID unik per event. (#217)
[0.4.0] - 2026-07-06
Rilis besar: perluasan kapabilitas pesan (teks lanjutan, grup, kontak/profil, channel, webhook pesan masuk) + pengerasan keamanan & keandalan dari audit.
Added
Kirim pesan — jenis baru di POST /v1/messages:
- Sticker (
type: "sticker") — kirim.webp(diam/animasi). (#70) - Edit pesan (
type: "edit") — ubah teks pesan terkirim (jendela 20 menit). (#72) - Poll (
type: "poll") — buat polling multi-opsi. (#74) - Disappearing timer (
type: "disappearing") — atur self-destruct chat (off/24h/7d/90d). (#77) - Teruskan (
forwarded: true) — tandai pesan sebagai "Diteruskan". (#79) - Status/Story (
type: "status") — posting ke Status WhatsApp (teks/gambar/video). (#75) - Undangan grup in-chat (
type: "group_invite") — kirim bubble undangan grup. (#76)
Manajemen grup (endpoint /v1/sessions/{id}/groups/...):
- Buat grup, info detail, ubah nama/deskripsi/foto, ambil & reset link undangan, gabung via link, keluar grup, serta mute (announce) & lock grup. (#84, #86, #87, #88, #89, #90, #91)
Kontak & profil (endpoint /v1/sessions/{id}/...):
- Info detail user, foto profil kontak, ubah bio/About sesi, serta blocklist (blokir/buka blokir). (#93, #94, #95, #97)
Channel / Newsletter (endpoint /v1/sessions/{id}/newsletters/...):
- Buat & kelola channel, follow/unfollow, kirim pesan teks/media, dan reaksi ke pesan channel. (#98, #99, #100)
Webhook — event & field baru:
kind: "poll_vote"— suara poll masuk (hash opsi terpilih + korelasi ke poll asal). (#80)kind: "call"— event panggilan masuk/terminasi, dengan opsi auto-reject per-nomor. (#81)kind: "presence"— status online/offline kontak yang dilanggani. (#82)broadcast: true— menandai pesan Status/Story kontak pada envelopemessage. (#83)
Sesi:
- Langganan presence kontak (
POST /v1/sessions/{id}/presence/subscribe). (#82) - Auto-reject panggilan per-nomor (
GET|POST /v1/sessions/{id}/calls/auto-reject). (#81)
Changed
- Retry kirim transien dibatasi: kegagalan sementara (koneksi/upload ke WhatsApp) kini di-retry dengan jeda (maks ~5×) lalu menyerah rapi ke DLQ + webhook
kind: "status"dengan reason baruRETRIES_EXHAUSTED— tidak lagi berpotensi mengulang tanpa batas. (#144) - OpenAPI dilengkapi: semua endpoint live kini terdokumentasi di
openapi.yaml, dengan gerbang CI yang mencegah endpoint tanpa spec di masa depan. (#135)
Fixed
- Failover worker: sesi "yatim" (lease affinity basi milik worker lama) kini otomatis diambil alih secara berkala — nomor tidak lagi berstatus "Terputus" permanen sampai restart manual. (#141)
- Contoh verifikasi webhook di portal diperbaiki agar sesuai skema signature sebenarnya (
X-Webhook-Signature,t=..,v1=..atas"<timestamp>.<body>"). (#133)
Security
- Sanitasi XSS pada konten Terms of Service yang dirender via
v-html(allowlist tag/atribut). (#137) - Tolak CRLF header injection pada email transaksional (validasi alamat & subject sebelum kirim). (#138)
[0.3.0] - 2026-07-01
Added
- API Grup: Endpoint baru untuk menambahkan, menghapus, mempromosikan (promote), dan menurunkan (demote) partisipan grup WhatsApp. (#85)
- Halaman Mulai Cepat (SPA): Panduan interaktif Getting Started di portal user dengan snippet CURL untuk proses pairing, kirim pesan, dan konfigurasi webhook. (#54)
- Contoh Webhook Receiver: Penambahan contoh kode implementasi verifikasi webhook di Go, Ruby, dan Java. (#56)
- Dokumentasi Terpusat: Integrasi penuh navigasi dari public docs (VitePress) langsung menuju interactive API docs (Scalar). (#55)
[0.2.0] - 2026-06-15
Added
- Webhook HMAC Signature: Menambahkan lapisan keamanan baru. Seluruh request dari webhook WagWay kini ditandatangani menggunakan HMAC-SHA256 pada header
X-Webhook-Signaturedengan memanfaatkan webhook secret. - Portal Developer: Self-serve pembuatan dan pencabutan API Keys dari dashboard user.
Changed
- Perbaikan performa delivery receipt pada status pesan (sekarang jauh lebih real-time).
[0.1.0] - 2026-05-20
Added
- Rilis publik pertama WagWay API.
- Dukungan untuk pengiriman pesan teks dan media.
- Multi-sesi: beberapa nomor WhatsApp per akun.
