Integrasi API & Broker

Selamat datang di dokumentasi pengiriman notifikasi FCM. Sistem ini mendukung dua metode integrasi: melalui Direct HTTP API untuk request real-time, dan Message Broker untuk pengiriman asinkron volume tinggi.

Konfigurasi Dasar

Seluruh endpoint API dapat diakses melalui base URL berikut:

https://firebase-router.ussidev.my.id/api

Gunakan header wajib berikut:

Content-Type: application/json

Single Device Notification

Gunakan mode ini untuk mengirim pesan personal ke satu pengguna tertentu menggunakan token unik mereka.

POST /send-fcm

Request Payload

{
  "to": "TOKEN_PERANGKAT_XYZ",
  "notification": {
    "title": "Halo!",
    "body": "Ini adalah isi pesan notifikasi.",
    "sound": "default"
  },
  "data": {
    "key1": "value1",
    "key2": "value2"
  },
  "android": {
    "priority": "high"
  },
  "time_to_live": 3600
}
Field Type Required Description
to String Yes Target token FCM perangkat.
notification.title String Yes Judul pesan.
notification.body String Yes Isi pesan.
notification.sound String No Suara notifikasi (contoh: default).
data Object No Payload kustom (Key-Value) untuk diolah aplikasi.
android.priority String No Prioritas Android (high atau normal).
time_to_live Number No Masa aktif pesan dalam detik (default 3600).

Multi Device Notification

Kirim pesan yang sama ke maksimal 1000 perangkat dalam satu kali request.

Request Payload

{
  "registration_ids": ["TOKEN_1", "TOKEN_2", "TOKEN_3"],
  "notification": {
    "title": "Broadcast",
    "body": "Pesan untuk banyak orang"
  },
  "collapse_key": "broadcast_update"
}
Field Type Required Description
registration_ids Array Yes Daftar token perangkat (Maksimal 1000).
notification.title String Yes Judul pesan.
notification.body String Yes Isi pesan.
collapse_key String No Grup notifikasi agar hanya pesan terbaru yang muncul.

Platform Specific Config

Gunakan konfigurasi ini untuk memberikan visual dan perilaku berbeda antar Android dan iOS (APNS).

Request Payload

{
  "to": "TOKEN_XYZ",
  "notification": {
    "title": "Notifikasi Keren",
    "body": "Dengan fitur spesifik platform"
  },
  "android": {
    "priority": "high",
    "notification": {
      "channel_id": "important_channel",
      "color": "#FF0000",
      "image": "https://example.com/image.jpg"
    }
  },
  "apns": {
    "headers": {
      "apns-priority": "10"
    },
    "payload": {
      "aps": {
        "alert": {
          "title": "Notifikasi Keren",
          "body": "Untuk iOS"
        },
        "badge": 5,
        "sound": "default"
      }
    }
  }
}
Field Type Required Description
android.notification.channel_id String No ID Channel notifikasi Android.
android.notification.color String No Warna ikon notifikasi dalam format Hex.
android.notification.image String No URL gambar untuk notifikasi Android.
apns.headers.apns-priority String No Prioritas APNS (10 atau 5).
apns.payload.aps.badge Number No Jumlah angka pada badge ikon aplikasi iOS.
apns.payload.aps.alert.title String No Judul khusus untuk perangkat iOS.

Topic / Condition

Mengirim pesan ke sekelompok pengguna yang berlangganan topik tertentu secara spesifik.

Request Payload

{
  "condition": "'promo' in topics || 'newsletter' in topics",
  "notification": {
    "title": "Berita Baru",
    "body": "Ada berita terbaru nih!"
  }
}
Field Type Required Description
condition String Yes Logika pemilihan topik (contoh: 'weather' in topics).
notification.title String Yes Judul pesan untuk target topik.
notification.body String Yes Isi pesan untuk target topik.

Note: Sintaks condition mendukung operator logika OR (||) dan AND (&&).

Topic Management

Endpoint untuk mendaftarkan atau menghapus token dari topik tertentu.

Request Payload

{
  "topic": "berita",
  "tokens": ["token_1", "token_2"]
}
Field Type Required Description
topic String Yes Nama topik (contoh: berita).
tokens Array Yes Daftar token perangkat yang ingin dikelola.

Endpoints:

POST /topic/subscribe
POST /topic/unsubscribe

Global Payload (Broker Metadata)

Struktur ini adalah standar payload yang harus dikirim melalui Message Broker. Consumer akan membaca field action untuk menentukan proses selanjutnya.

Metadata Structure

{
  "action": "send_fcm",
  "description": "Kirim notifikasi OTP",
  "identity": "auth-service-01",
  "registered_id": "TOKEN_TARGET",
  "channel": "topic_name",
  "data": { ... payload utama ... }
}
Field Type Description
action String Jenis aksi: send_fcm, subscribe_topic, unsubscribe_topic.
description String Deskripsi singkat tujuan pesan (untuk audit/logging).
identity String ID unik pengirim atau request id.
registered_id String Belum digunakan (Opsional).
channel String Belum digunakan (Opsional).
data Object Payload utama sesuai dengan aksi yang dipilih (FCM Request atau Topic Request).
🚀 Buka Simulator Tester →