Skip to content

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.0 menandai 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 webhook type: "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 objek poll (name, options, selectable_count). Cocokkan SHA256(option) dengan selected_hashes pada event poll_vote untuk memetakan suara ke opsi. (#156)
  • Webhook — kategori events_url: poll_vote, typing, presence, call kini punya URL kategori sendiri, terpisah dari messages_url (volume bisa tinggi di grup ramai). Aksi diperlukan: bila Anda sudah memakai event ini via messages_url, tambahkan events_url (boleh sama dengan messages_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 envelope message. (#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 baru RETRIES_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-Signature dengan 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.

Produk independen — tidak terafiliasi dengan Meta Platforms, Inc. atau WhatsApp Inc.