{
    "info": {
        "name": "WhatsCRM Client API",
        "description": "Koleksi yang sama dengan dokumentasi publik /docs/client. Isi variable client_api_key sebelum menjalankan request.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "variable": [
        {
            "key": "base_url",
            "value": "http://hanindyamom.whatsva.id/api"
        },
        {
            "key": "client_api_key",
            "value": "YOUR_CLIENT_API_KEY"
        }
    ],
    "item": [
        {
            "name": "Pesan",
            "item": [
                {
                    "name": "Kirim template",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/send-template",
                        "description": "Kirim pesan WhatsApp memakai template yang sudah APPROVED.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name_template\": \"welcome_message\",\n    \"phone_number\": \"628111223344\",\n    \"language_code\": \"id\",\n    \"body_params\": [\n        \"Budi\",\n        \"INV-123\"\n    ],\n    \"header_params\": [\n        \"Promo Akhir Tahun\"\n    ],\n    \"header_media_url\": \"https://example.com/image.jpg\",\n    \"button_params\": {\n        \"0\": [\n            \"tracking123\"\n        ]\n    }\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Kirim pesan session",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/messages/multi",
                        "description": "Kirim pesan non-template lewat nomor WhatsApp milik client. Hanya di dalam jendela percakapan 24 jam. `sender` wajib nomor yang terhubung ke akun. Isi `to` atau `recipient`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"sender\": \"628111223344\",\n    \"to\": \"6281234567890\",\n    \"type\": \"text\",\n    \"message\": \"Halo, pesanan Anda sedang diproses.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Kirim template dengan nomor pengirim",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/send-template-multi",
                        "description": "Sama seperti send-template, tetapi `sender` wajib dan resolver default tidak dipakai.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"sender\": \"628111223344\",\n    \"name_template\": \"welcome_message\",\n    \"phone_number\": \"6281234567890\",\n    \"language_code\": \"id\",\n    \"body_params\": [\n        \"Budi\",\n        \"INV-123\"\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Kirim template lewat antrian",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/send-template-ingest-multi",
                        "description": "Masuk antrian dan diproses worker. `sender` dicek saat request diterima. Template dicek saat worker berjalan. Endpoint ini tidak dihitung rate limit.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"sender\": \"628111223344\",\n    \"name_template\": \"welcome_message\",\n    \"phone_number\": \"6281234567890\",\n    \"language_code\": \"id\",\n    \"body_params\": [\n        \"Budi\",\n        \"INV-123\"\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "Media",
            "item": [
                {
                    "name": "Metadata media",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/media/12345",
                        "description": "Metadata media pesan masuk. `message_id` adalah `data.id` pada webhook `message.received`. Hanya jika nomor WABA pesan itu milik API key ini."
                    }
                },
                {
                    "name": "Unduh media",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/media/12345/download",
                        "description": "Setelah media siap, response HTTP 302 mengarah ke file. Ikuti redirect. 409 jika masih pending atau processing."
                    }
                }
            ]
        },
        {
            "name": "Inbox",
            "item": [
                {
                    "name": "Daftar nomor WABA",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/waba-list",
                        "description": "Nomor WABA yang bisa dipakai inbox."
                    }
                },
                {
                    "name": "Daftar percakapan",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations?status=open&page=1&per_page=20",
                        "description": "Daftar percakapan milik nomor WABA client. Percakapan di luar nomor itu mengembalikan 403."
                    }
                },
                {
                    "name": "Sync daftar percakapan",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/sync",
                        "description": "Bootstrap atau delta. Kirim `last_sync` untuk perubahan sejak waktu itu."
                    }
                },
                {
                    "name": "Jumlah chat",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/chat-count",
                        "description": "Jumlah percakapan."
                    }
                },
                {
                    "name": "Jumlah per status",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/chat-counts",
                        "description": "Jumlah percakapan per status."
                    }
                },
                {
                    "name": "Pesan percakapan",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/messages?mark_read=1",
                        "description": "Detail percakapan ada di `assignment` pada request pertama (tanpa cursor)."
                    }
                },
                {
                    "name": "Cari pesan",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/search?q=resi",
                        "description": "Cari isi pesan dalam satu percakapan."
                    }
                },
                {
                    "name": "Kirim pesan dalam percakapan",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/send",
                        "description": "Pesan non-template hanya dalam jendela 24 jam. Media memakai `media_url` atau `media_id`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"type\": \"text\",\n    \"message\": \"Halo, pesanan sedang diproses.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Edit pesan keluar",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/messages/out_90",
                        "description": "Edit pesan keluar bertipe teks. `messageId` memakai format `out_{id}`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"message\": \"Teks yang sudah diperbaiki.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Hapus pesan",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/messages/out_90",
                        "description": "Pesan masuk memakai ID numerik. Pesan keluar memakai `out_{id}`."
                    }
                },
                {
                    "name": "Antrian unduh ulang media",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/messages/12345/retry-media",
                        "description": "Masukkan ulang job unduh media."
                    }
                },
                {
                    "name": "Unduh ulang media langsung",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/messages/12345/refetch-media",
                        "description": "Unduh ulang media tanpa menunggu antrian."
                    }
                },
                {
                    "name": "Tutup percakapan",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/close",
                        "description": "Tutup percakapan."
                    }
                },
                {
                    "name": "Buka lagi percakapan",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/reopen",
                        "description": "Buka percakapan yang sudah ditutup."
                    }
                },
                {
                    "name": "Simpan catatan",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/notes",
                        "description": "Catatan internal percakapan, maksimal 2000 karakter.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"notes\": \"Pelanggan minta follow up besok.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Simpan kontak",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/save-contact",
                        "description": "Simpan nama, email, dan tag kontak percakapan ini.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Budi\",\n    \"email\": \"budi@example.com\",\n    \"tags\": [\n        \"pelanggan\"\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Samakan status belum dibalas",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/reconcile-unreplied",
                        "description": "Samakan status belum dibalas dengan Meta."
                    }
                },
                {
                    "name": "Tarik pesan lama",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/conversations/678/sync-server",
                        "description": "Tarik pesan lama yang belum muncul di percakapan."
                    }
                },
                {
                    "name": "Cari kontak",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/contacts/search?q=budi",
                        "description": "Cari kontak client."
                    }
                },
                {
                    "name": "Template untuk inbox",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/templates",
                        "description": "Template approved yang bisa dikirim dari inbox."
                    }
                },
                {
                    "name": "Form parameter template",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/templates/12/form",
                        "description": "Field yang perlu diisi sebelum mengirim template dari inbox."
                    }
                },
                {
                    "name": "Kirim template dari inbox",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/send-template",
                        "description": "Kirim ke kontak yang sudah ada (`recipient_mode=contact` + `contact_id`) atau nomor baru. Parameter tambahan mengikuti form template.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"template_id\": 12,\n    \"recipient_mode\": \"new\",\n    \"new_phone\": \"6281234567890\",\n    \"new_name\": \"Budi\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Status sync histori",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/coexistence-sync/status",
                        "description": "Status sync histori WhatsApp Business App."
                    }
                },
                {
                    "name": "Mulai sync histori",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/inbox/coexistence-sync/1",
                        "description": "Mulai sync histori WhatsApp Business App untuk satu nomor."
                    }
                }
            ]
        },
        {
            "name": "Template",
            "item": [
                {
                    "name": "Daftar template",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/templates?category=utility&status=approved&page=1&per_page=50",
                        "description": "Secara default hanya template `approved` yang bisa dipakai di send-template."
                    }
                },
                {
                    "name": "Detail template",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/templates/client_12_order_confirm?language=id",
                        "description": "Cek placeholder, header, dan button sebelum send-template."
                    }
                },
                {
                    "name": "Buat template",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/templates",
                        "description": "Membuat template dan mengirimnya ke Meta. Status awal `pending`. Setelah `approved` bisa dipakai di send-template. Placeholder body memakai {{1}}, {{2}}, dan seterusnya.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Konfirmasi Pesanan\",\n    \"category\": \"utility\",\n    \"language\": \"id\",\n    \"header_type\": \"text\",\n    \"header_text\": \"Pesanan {{1}}\",\n    \"body_text\": \"Halo {{1}}, pesanan {{2}} telah dikirim.\",\n    \"footer_text\": \"Terima kasih\",\n    \"buttons\": [\n        {\n            \"type\": \"URL\",\n            \"text\": \"Lacak Pesanan\",\n            \"url\": \"https://example.com/order/{{1}}\"\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "Saldo",
            "item": [
                {
                    "name": "Cek saldo",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/balance",
                        "description": "Saldo dan ringkasan pemakaian akun."
                    }
                },
                {
                    "name": "Channel pembayaran",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/topup/channels",
                        "description": "Daftar channel dari payment gateway yang sedang aktif."
                    }
                },
                {
                    "name": "Buat link pembayaran",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/topup/link",
                        "description": "Membuat link pembayaran publik (Midtrans atau Pakar Digital, yang sedang aktif). Buka `payment_url` untuk membayar. Saldo bertambah setelah callback gateway sukses. Minimal nominal Rp 1.000. `phone` wajib untuk e-wallet.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"amount\": 50000,\n    \"payment_channel\": \"WALLET_QRIS\",\n    \"phone\": \"081234567890\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Status link pembayaran",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Api-Key",
                                "value": "Bearer {{client_api_key}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{base_url}}/v1/topup/link/TOP-AB12CD34-1710000000",
                        "description": "Cek status transaksi dan ambil ulang payment_url jika masih pending."
                    }
                }
            ]
        }
    ]
}