Marketing App API

Sistem Manajemen Leads dengan Hierarki Wilayah & Progress Tracking Otomatis

πŸ—ΊοΈ Alur Hierarki & Progress

API ini dirancang untuk mendukung alur pemilihan wilayah secara bertahap (Drill-down) dengan informasi progress pengerjaan di setiap levelnya.

Kota
1/5 Selesai
Kecamatan
1/10 Selesai
Kelurahan
Data Mebel
Detail Mebel
Input Kendala

Logika Progress: Sebuah lead dianggap "Selesai" jika statusnya telah diubah dari nilai default 'Belum Dikunjungi'.

πŸ” Autentikasi

Gunakan API Key berikut pada header untuk setiap request:

Header Name: x-api-key
Header Value: marketing-secret-key-123

πŸ› οΈ Frontend Service

Tersedia helper class JavaScript untuk memudahkan integrasi di frontend. Kamu bisa menyertakan file /api-service.js di project kamu.

// Contoh penggunaan di browser
const service = new MarketingService('http://localhost:3000');

// Ambil data kota
const cities = await service.getCities();
console.log(cities); // [{ id: 1, name: 'Malang', total_leads: 5, finished_leads: 1 }]

πŸš€ Endpoints Wilayah

GET /api/cities Supports Progress

Mengambil daftar semua kota beserta jumlah total leads dan leads yang sudah selesai di kota tersebut.

// Response Preview
[
  {
    "id": 1,
    "name": "Kota Malang",
    "total_leads": 50,
    "finished_leads": 12
  }
]
GET /api/districts Supports Progress

Mengambil daftar kecamatan untuk kota tertentu.

ParamRequiredDescription
city_idβœ… YesID dari kota yang dipilih.
GET /api/villages Supports Progress

Mengambil daftar kelurahan/desa untuk kecamatan tertentu.

ParamRequiredDescription
district_idβœ… YesID dari kecamatan yang dipilih.

πŸ“¦ Endpoints Leads (Mebel)

GET /api/leads Supports Progress

Mengambil daftar mebel. Bisa difilter berdasarkan village_id untuk alur drill-down.

ParamTypeDescription
village_idnumberFilter mebel di desa tertentu.
searchstringCari nama/alamat.
pagenumberPagination (Default: 1).
// Response Preview
{
  "data": [...],
  "summary": {
    "total": 15,
    "finished": 1
  },
  "pagination": {...}
}
PUT /api/leads/:id

Mengupdate status pengerjaan dan kendala lapangan.

// Request Body (JSON)
{
  "status": "Sudah Dikunjungi",
  "keterangan": "Kendala: Pemilik toko sedang tidak ada di tempat."
}