{"info":{"_postman_id":"0bdb1c4c-e1af-4907-ab71-958d22f601a2","name":"postman-wahide","description":"<html><head></head><body><h1 id=\"postman-wahide-api-collection\">postman-wahide API Collection</h1>\n<p>Koleksi ini merupakan dokumentasi lengkap seluruh endpoint REST API untuk platform <strong>postman-wahide</strong> — sebuah platform WhatsApp Gateway &amp; Business Messaging yang mencakup manajemen pengguna, pengiriman pesan WhatsApp, kampanye broadcast, manajemen kontak, keuangan, konten, notifikasi, dan layanan pendukung lainnya.</p>\n<hr>\n<h2 id=\"🔧-variabel-koleksi\">🔧 Variabel Koleksi</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variabel</th>\n<th>Deskripsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code></code></td>\n<td>Base URL server API (contoh: <code>https://api.example.com</code>)</td>\n</tr>\n<tr>\n<td><code></code></td>\n<td>Secret key untuk autentikasi endpoint cronjob (dikirim via header <code>X-Cron-Secret</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"🔐-autentikasi\">🔐 Autentikasi</h2>\n<p>Sebagian besar endpoint memerlukan autentikasi. Gunakan salah satu metode berikut:</p>\n<ul>\n<li><p><strong>Bearer Token (JWT):</strong> Diperoleh setelah login via <code>POST /api/v1/auth/login</code>. Sertakan di header: <code>Authorization: Bearer</code></p>\n</li>\n<li><p><strong>API Key:</strong> Diperoleh via <code>POST /api/v1/auth/token</code>. Sertakan di header: <code>Authorization: Bearer</code></p>\n</li>\n<li><p><strong>Cron Secret:</strong> Khusus endpoint cronjob, sertakan header <code>X-Cron-Secret: </code></p>\n</li>\n</ul>\n<p>Endpoint publik (health check, login, register, public plans, public posts, public settings) tidak memerlukan autentikasi.</p>\n<hr>\n<h2 id=\"📁-struktur-modul\">📁 Struktur Modul</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Folder</th>\n<th>Deskripsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>00-health</code></td>\n<td>Health check &amp; readiness probe untuk monitoring dan Kubernetes</td>\n</tr>\n<tr>\n<td><code>01-iam</code></td>\n<td>Identity &amp; Access Management: autentikasi, manajemen pengguna, agen, dan alamat</td>\n</tr>\n<tr>\n<td><code>02-subscription</code></td>\n<td>Manajemen paket langganan dan plan untuk tenant</td>\n</tr>\n<tr>\n<td><code>03-whatsapp</code></td>\n<td>Manajemen perangkat WhatsApp dan pengiriman pesan</td>\n</tr>\n<tr>\n<td><code>04-campaign</code></td>\n<td>Pembuatan dan pengelolaan kampanye broadcast WhatsApp</td>\n</tr>\n<tr>\n<td><code>05-contact</code></td>\n<td>Manajemen kontak dan tag audiens</td>\n</tr>\n<tr>\n<td><code>06-finance</code></td>\n<td>Keuangan: billing, invoice, voucher, webhook pembayaran, dan laporan</td>\n</tr>\n<tr>\n<td><code>07-content</code></td>\n<td>Manajemen konten: artikel/post, pengaturan publik, dan penyimpanan file</td>\n</tr>\n<tr>\n<td><code>08-support</code></td>\n<td>Sistem tiket dukungan pelanggan</td>\n</tr>\n<tr>\n<td><code>09-notification</code></td>\n<td>Sistem notifikasi dan broadcast ke pengguna</td>\n</tr>\n<tr>\n<td><code>10-cronjob</code></td>\n<td>Endpoint scheduled job untuk pemeliharaan sistem otomatis</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"🚀-cara-memulai\">🚀 Cara Memulai</h2>\n<ol>\n<li><p>Set variabel <code></code> sesuai environment (development/staging/production).</p>\n</li>\n<li><p>Lakukan login via <code>POST /api/v1/auth/login</code> untuk mendapatkan token JWT.</p>\n</li>\n<li><p>Set token JWT ke variabel environment atau gunakan langsung di header <code>Authorization</code>.</p>\n</li>\n<li><p>Untuk endpoint cronjob, pastikan <code></code> sudah diset dengan nilai yang benar.</p>\n</li>\n</ol>\n<hr>\n<h2 id=\"📌-catatan-umum\">📌 Catatan Umum</h2>\n<ul>\n<li><p>Semua request dan response menggunakan format <strong>JSON</strong> (<code>Content-Type: application/json</code>), kecuali upload file.</p>\n</li>\n<li><p>Pagination menggunakan query parameter <code>page</code> dan <code>page_size</code>.</p>\n</li>\n<li><p>Path parameter dinamis ditandai dengan huruf kapital, contoh: <code>USER_ID</code>, <code>DEVICE_ID</code>, <code>TICKET_ID</code>.</p>\n</li>\n<li><p>Endpoint admin hanya dapat diakses oleh pengguna dengan role <strong>admin</strong> atau <strong>superadmin</strong>.</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"postman-wahide API Collection","slug":"postman-wahide-api-collection"}],"owner":"26294023","collectionId":"0bdb1c4c-e1af-4907-ab71-958d22f601a2","publishedId":"2sBYAuSqz3","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-08-30T08:52:32.000Z"},"item":[{"name":"03-whatsapp","item":[{"name":"devices","item":[{"name":"list-tenant-devices","id":"fde6ab49-0d03-480b-a1ea-ccd966d9681b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/v1/wa/devices","urlObject":{"path":["api","v1","wa","devices"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"fde6ab49-0d03-480b-a1ea-ccd966d9681b"},{"name":"create-device-slot","id":"20b8831f-59dd-4f3b-b143-1e2d865fad78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"push_name\": \"Wahide Customer Service 1\"\n}","options":{"raw":{"language":"json"}}},"url":"/api/v1/wa/devices","urlObject":{"path":["api","v1","wa","devices"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"20b8831f-59dd-4f3b-b143-1e2d865fad78"},{"name":"pair-device-qr-code","id":"f5903a4d-aff7-4464-a6c5-7c804d2e96cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"/api/v1/wa/devices/DEVICE_ID/pair","urlObject":{"path":["api","v1","wa","devices","DEVICE_ID","pair"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"f5903a4d-aff7-4464-a6c5-7c804d2e96cc"},{"name":"disconnect-device","id":"6228227a-5019-4b1c-b9d5-84dba090b938","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"/api/v1/wa/devices/DEVICE_ID/disconnect","urlObject":{"path":["api","v1","wa","devices","DEVICE_ID","disconnect"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"6228227a-5019-4b1c-b9d5-84dba090b938"},{"name":"delete-device-slot","id":"cff81336-ffed-4a91-b15f-0211c01de6e8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"/api/v1/wa/devices/DEVICE_ID","urlObject":{"path":["api","v1","wa","devices","DEVICE_ID"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"cff81336-ffed-4a91-b15f-0211c01de6e8"}],"id":"55e14f38-e9da-4ce4-acd5-c87deda9c23d","description":"<h1 id=\"devices\">devices</h1>\n<p>Sub-folder ini mengelola <strong>slot perangkat WhatsApp</strong> yang terhubung ke platform. Setiap perangkat merepresentasikan satu nomor WhatsApp yang dapat digunakan untuk mengirim dan menerima pesan.</p>\n<hr />\n<h2 id=\"📋-daftar-endpoint\">📋 Daftar Endpoint</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Path</th>\n<th>Fungsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/wa/devices</code></td>\n<td><strong>Create Device Slot</strong> — Membuat slot perangkat WhatsApp baru (belum terhubung ke nomor).</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/api/v1/wa/devices</code></td>\n<td><strong>List Tenant Devices</strong> — Menampilkan daftar semua perangkat WhatsApp milik tenant beserta status koneksinya.</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/wa/devices/{DEVICE_ID}/pair</code></td>\n<td><strong>Pair Device via QR Code</strong> — Memulai proses pairing perangkat dengan mengembalikan QR Code yang harus dipindai di aplikasi WhatsApp.</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/wa/devices/{DEVICE_ID}/disconnect</code></td>\n<td><strong>Disconnect Device</strong> — Memutuskan koneksi perangkat WhatsApp dari platform.</td>\n</tr>\n<tr>\n<td><code>DELETE</code></td>\n<td><code>/api/v1/wa/devices/{DEVICE_ID}</code></td>\n<td><strong>Delete Device Slot</strong> — Menghapus slot perangkat secara permanen.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"🔐-autentikasi\">🔐 Autentikasi</h2>\n<p>Semua endpoint memerlukan <strong>Bearer Token</strong> (JWT atau API Key) di header <code>Authorization</code>.</p>\n<hr />\n<h2 id=\"📌-catatan\">📌 Catatan</h2>\n<ul>\n<li>Ganti <code>DEVICE_ID</code> pada path dengan ID perangkat yang valid.</li>\n<li>Alur pairing: buat slot → panggil endpoint pair → pindai QR Code di WhatsApp → perangkat terhubung.</li>\n<li>Jumlah slot perangkat yang dapat dibuat dibatasi oleh paket langganan aktif tenant.</li>\n<li>Status perangkat dapat berupa: <code>CONNECTED</code>, <code>DISCONNECTED</code>, <code>PAIRING</code>, <code>BANNED</code>.</li>\n</ul>\n","_postman_id":"55e14f38-e9da-4ce4-acd5-c87deda9c23d"},{"name":"messages","item":[{"name":"send-instant-text-message","id":"01ebfee7-43de-4445-8827-9970e719baf2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"device_id\": \"DEVICE_ID\",\n  \"phone\": \"6281234567890\",\n  \"message\": \"Halo! Ini adalah pesan verifikasi dari Wahide Gateway.\"\n}","options":{"raw":{"language":"json"}}},"url":"/api/v1/wa/messages/send","urlObject":{"path":["api","v1","wa","messages","send"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"01ebfee7-43de-4445-8827-9970e719baf2"},{"name":"send-media-message","id":"59bcb786-c697-4262-a4e2-c1a73ed11d11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"device_id\": \"DEVICE_ID\",\n  \"phone\": \"6281234567890\",\n  \"message\": \"Berikut adalah invoice langganan Anda.\",\n  \"media_url\": \"https://pub-r2.wahide.com/media/invoice_1001.pdf\",\n  \"file_name\": \"invoice_1001.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":"/api/v1/wa/messages/send","urlObject":{"path":["api","v1","wa","messages","send"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"59bcb786-c697-4262-a4e2-c1a73ed11d11"},{"name":"meta-cloud-api-compatible-send","id":"327aa387-9124-4f1f-b698-d7295ac86298","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messaging_product\": \"whatsapp\",\n  \"recipient_type\": \"individual\",\n  \"to\": \"6281234567890\",\n  \"type\": \"text\",\n  \"text\": {\n    \"preview_url\": false,\n    \"body\": \"Pesan kompatibel dengan format Meta WhatsApp Cloud API\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"/api/v1/v18.0/DEVICE_ID/messages","urlObject":{"path":["api","v1","v18.0","DEVICE_ID","messages"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"327aa387-9124-4f1f-b698-d7295ac86298"}],"id":"12a2bef7-45fe-4d04-85fa-8db165b5864c","description":"<h1 id=\"messages\">messages</h1>\n<p>Sub-folder ini mengelola <strong>pengiriman pesan WhatsApp</strong> secara langsung (instant messaging). Mendukung pengiriman pesan teks, pesan media (gambar, dokumen, audio, video), serta kompatibel dengan format Meta Cloud API.</p>\n<hr />\n<h2 id=\"📋-daftar-endpoint\">📋 Daftar Endpoint</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Path</th>\n<th>Fungsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/wa/messages/send</code></td>\n<td><strong>Send Instant Text Message</strong> — Mengirim pesan teks WhatsApp secara langsung ke nomor tujuan menggunakan perangkat yang terhubung.</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/v18.0/{DEVICE_ID}/messages</code></td>\n<td><strong>Meta Cloud API Compatible Send</strong> — Mengirim pesan dengan format request yang kompatibel dengan Meta Cloud API WhatsApp Business (v18.0).</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/wa/messages/send</code></td>\n<td><strong>Send Media Message</strong> — Mengirim pesan media (gambar, dokumen, audio, video) ke nomor tujuan.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"🔐-autentikasi\">🔐 Autentikasi</h2>\n<p>Semua endpoint memerlukan <strong>Bearer Token</strong> (JWT atau API Key) di header <code>Authorization</code>.</p>\n<hr />\n<h2 id=\"📌-catatan\">📌 Catatan</h2>\n<ul>\n<li>Ganti <code>DEVICE_ID</code> pada path endpoint Meta Cloud API dengan ID perangkat yang valid.</li>\n<li>Perangkat yang digunakan untuk mengirim pesan harus dalam status <code>CONNECTED</code>.</li>\n<li>Endpoint Meta Cloud API Compatible dirancang untuk memudahkan migrasi dari Meta Cloud API — format request dan response mengikuti standar Meta.</li>\n<li>Nomor tujuan harus dalam format internasional tanpa tanda <code>+</code> (contoh: <code>628123456789</code>).</li>\n</ul>\n","_postman_id":"12a2bef7-45fe-4d04-85fa-8db165b5864c"}],"id":"64bdddbc-7492-4f01-aa23-eebd3f4ebc93","description":"<h1 id=\"03-whatsapp\">03-whatsapp</h1>\n<p>Modul <strong>WhatsApp Gateway</strong> mengelola perangkat WhatsApp yang terhubung ke platform dan pengiriman pesan WhatsApp secara langsung (instant messaging). Modul ini mendukung pairing perangkat via QR Code, manajemen slot perangkat, serta pengiriman pesan teks dan media.</p>\n<hr />\n<h2 id=\"📁-sub-folder\">📁 Sub-folder</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Sub-folder</th>\n<th>Deskripsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>devices</code></td>\n<td>Manajemen slot perangkat WhatsApp: buat, list, pair via QR, disconnect, dan hapus</td>\n</tr>\n<tr>\n<td><code>messages</code></td>\n<td>Pengiriman pesan WhatsApp: teks, media, dan kompatibel dengan Meta Cloud API</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"🔐-autentikasi\">🔐 Autentikasi</h2>\n<p>Semua endpoint di modul ini memerlukan <strong>Bearer Token</strong> (JWT atau API Key) di header <code>Authorization</code>.</p>\n<hr />\n<h2 id=\"📌-catatan\">📌 Catatan</h2>\n<ul>\n<li>Setiap tenant memiliki kuota slot perangkat sesuai paket langganan aktif.</li>\n<li>Proses pairing perangkat dilakukan dengan memindai QR Code yang dikembalikan oleh endpoint <code>pair-device-qr-code</code>.</li>\n<li>Endpoint <code>meta-cloud-api-compatible-send</code> dirancang kompatibel dengan format request Meta Cloud API WhatsApp Business, memudahkan migrasi dari Meta Cloud API.</li>\n</ul>\n","_postman_id":"64bdddbc-7492-4f01-aa23-eebd3f4ebc93"},{"name":"04-campaign","item":[{"name":"list-campaigns","id":"f486c814-7141-4cf6-8f63-092cd63638f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/v1/campaigns?page=1&page_size=20","urlObject":{"path":["api","v1","campaigns"],"host":[""],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]}},"response":[],"_postman_id":"f486c814-7141-4cf6-8f63-092cd63638f1"},{"name":"create-broadcast-campaign","id":"4d2e0813-fd09-49ca-a367-c8eaa866fabc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"device_id\": \"DEVICE_ID\",\n  \"tag_id\": \"TAG_ID\",\n  \"name\": \"Flash Sale Akhir Bulan\",\n  \"message\": \"Halo {name}, dapatkan diskon 50% untuk langganan Wahide hari ini! Gunakan voucher: {voucher_code}\",\n  \"media_url\": \"https://pub-r2.wahide.com/promo.jpg\",\n  \"min_delay\": 5,\n  \"max_delay\": 15\n}","options":{"raw":{"language":"json"}}},"url":"/api/v1/campaigns","urlObject":{"path":["api","v1","campaigns"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"4d2e0813-fd09-49ca-a367-c8eaa866fabc"},{"name":"start-campaign-dispatch","id":"f54cc658-5fe1-41b1-a2c1-8ee565421ba0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"/api/v1/campaigns/CAMPAIGN_ID/start","urlObject":{"path":["api","v1","campaigns","CAMPAIGN_ID","start"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"f54cc658-5fe1-41b1-a2c1-8ee565421ba0"},{"name":"list-message-audit-logs","id":"b6305174-1178-45f6-b8f4-4434feeabdd4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/v1/campaigns/logs?page=1&page_size=50&status=SENT","urlObject":{"path":["api","v1","campaigns","logs"],"host":[""],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"status","value":"SENT"}],"variable":[]}},"response":[],"_postman_id":"b6305174-1178-45f6-b8f4-4434feeabdd4"}],"id":"8ecfca6e-10ff-4c08-836c-c980a64555d4","description":"<h1 id=\"04-campaign\">04-campaign</h1>\n<p>Modul <strong>Campaign</strong> mengelola kampanye broadcast WhatsApp — memungkinkan tenant untuk membuat kampanye pesan massal, mengirimkannya ke daftar kontak, memantau status pengiriman, dan melihat log audit pesan.</p>\n<hr />\n<h2 id=\"📋-daftar-endpoint\">📋 Daftar Endpoint</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Path</th>\n<th>Fungsi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/campaigns</code></td>\n<td><strong>Create Broadcast Campaign</strong> — Membuat kampanye broadcast baru dengan template pesan dan daftar target penerima.</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/api/v1/campaigns?page=1&amp;page_size=20</code></td>\n<td><strong>List Campaigns</strong> — Menampilkan daftar semua kampanye milik tenant dengan pagination.</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/api/v1/campaigns/logs?page=1&amp;page_size=50&amp;status=SENT</code></td>\n<td><strong>List Message Audit Logs</strong> — Menampilkan log audit pengiriman pesan kampanye, dapat difilter berdasarkan status (<code>SENT</code>, <code>FAILED</code>, <code>PENDING</code>, dsb).</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/api/v1/campaigns/{CAMPAIGN_ID}/start</code></td>\n<td><strong>Start Campaign Dispatch</strong> — Memulai proses pengiriman pesan untuk kampanye yang sudah dibuat.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"🔐-autentikasi\">🔐 Autentikasi</h2>\n<p>Semua endpoint memerlukan <strong>Bearer Token</strong> (JWT atau API Key) di header <code>Authorization</code>.</p>\n<hr />\n<h2 id=\"📌-catatan\">📌 Catatan</h2>\n<ul>\n<li>Kampanye harus dibuat terlebih dahulu sebelum dapat di-dispatch.</li>\n<li>Ganti <code>CAMPAIGN_ID</code> pada path dengan ID kampanye yang valid.</li>\n<li>Filter log berdasarkan <code>status</code>: <code>SENT</code>, <code>FAILED</code>, <code>PENDING</code>, <code>QUEUED</code>.</li>\n<li>Kuota pengiriman pesan bergantung pada paket langganan aktif tenant.</li>\n</ul>\n","_postman_id":"8ecfca6e-10ff-4c08-836c-c980a64555d4"}],"variable":[{"key":"baseUrl","value":""},{"key":"cronSecret","value":""}]}