Documentation / Provisioning API

Provisioning API

Lapisan integrasi untuk mengelola aktivasi layanan, sinkronisasi perangkat, dan otomasi operasional jaringan dari satu endpoint terpadu.

Device Abstraction

Satu API konsisten untuk berbagai vendor jaringan tanpa logika manual per perangkat.

Atomic Provisioning

Eksekusi konfigurasi berurutan dengan rollback otomatis saat validasi gagal.

Billing Sync

Sinkronisasi status layanan dengan engine billing secara near real-time.

Provisioning Sequence

1. Validasi input pelanggan, paket layanan, dan policy akses.

2. Tentukan target device + profile konfigurasi berdasarkan kapasitas node.

3. Push konfigurasi terverifikasi ke infrastruktur (MikroTik/OLT).

4. Commit status ke billing + notifikasi otomatis ke kanal operasional.

Authentication

Provisioning API menggunakan service-to-service authentication via signed JWT dengan scope khusus. Hanya tenant dengan plan Pro atau Enterprise yang memiliki akses langsung ke provisioning endpoint.

# Required Headers

Authorization: Bearer <service_jwt>

X-Tenant-ID: mitra_abc123

X-Idempotency-Key: uuid-v4 # Wajib untuk mutating operations

Content-Type: application/json

# Required JWT Scopes

provision:execute — Jalankan provisioning baru

provision:read — Query status provisioning

provision:rollback — Trigger manual rollback

device:manage — CRUD device registry

API Endpoints

POST/api/provision/activate

Aktivasi layanan baru untuk pelanggan. Menjalankan full provisioning sequence.

Request Body

{

"customer_id": "cust_xyz789",

"service_plan": {

"package_id": "pkg_50mbps",

"bandwidth_up": "10Mbps",

"bandwidth_down": "50Mbps",

"ip_mode": "dhcp" | "static",

"static_ip": "10.10.1.100/24" // optional, jika ip_mode=static

},

"target": {

"device_id": "mikrotik_rb750_01", // optional, auto-place jika kosong

"interface": "ether3",

"vlan_id": 100

},

"billing": {

"start_date": "2026-05-19",

"cycle_days": 30,

"amount": 149000

},

"options": {

"dry_run": false,

"notify_channel": "whatsapp" | "telegram" | "both",

"priority": "normal" | "high"

}

}

Response (Success)

{

"id": "prov_abc123",

"status": "completed",

"steps": [

{ "step": "validate", "status": "ok", "duration_ms": 12 },

{ "step": "device_select", "status": "ok", "device": "mikrotik_rb750_01" },

{ "step": "config_push", "status": "ok", "duration_ms": 1840 },

{ "step": "verify", "status": "ok", "ping_ms": 3 },

{ "step": "billing_sync", "status": "ok", "invoice_id": "inv_001" },

{ "step": "notify", "status": "ok", "channel": "whatsapp" }

],

"total_duration_ms": 2340,

"device": {

"id": "mikrotik_rb750_01",

"ip": "192.168.1.1",

"interface": "ether3",

"config_applied": "queue_simple + firewall_filter"

},

"created_at": "2026-05-19T00:00:00Z"

}

POST/api/provision/deactivate

Nonaktifkan layanan pelanggan. Menghapus konfigurasi dari device dan menghentikan billing.

{

"customer_id": "cust_xyz789",

"reason": "non_payment" | "request" | "migration",

"effective_immediately": true,

"preserve_config": false // true = soft-disable, false = full removal

}

GET/api/provision/status/:provision_id

Query status provisioning yang sedang berjalan atau sudah selesai.

{

"id": "prov_abc123",

"status": "completed" | "in_progress" | "failed" | "rolled_back",

"current_step": "config_push",

"progress_pct": 75,

"started_at": "2026-05-19T00:00:00Z",

"completed_at": "2026-05-19T00:00:02.340Z",

"error": null | { "code": "PV-002", "message": "...", "step": "config_push" }

}

GET/api/provision/devices

List semua device yang terdaftar beserta kapasitas dan health status.

{

"devices": [

{

"id": "mikrotik_rb750_01",

"type": "mikrotik",

"model": "RB750Gr3",

"ip": "192.168.1.1",

"status": "online",

"capacity": { "total": 100, "used": 67, "available": 33 },

"health": { "cpu": 23, "memory": 45, "uptime_days": 142 }

}

],

"total": 12,

"online": 11,

"offline": 1

}

POST/api/provision/rollback/:provision_id

Manual rollback provisioning yang sudah selesai. Mengembalikan device ke state sebelumnya.

{

"reason": "customer_complaint" | "config_error" | "testing",

"notify_customer": true

}

Supported Devices

VendorProtocolSupported ModelsCapabilities
MikroTikSSH / RouterOS APIRB750, RB1100, CCR1036, hAPQueue, Firewall, DHCP, PPPoE, Hotspot
Huawei OLTSSH / SNMPMA5608T, MA5683TONU Registration, VLAN, Service Profile
ZTE OLTSSH / TL1C320, C300ONU Auth, Traffic Profile, VLAN Mapping
Generic LinuxSSHAny Linux-based routeriptables, tc, VLAN, Bridge

Rate Limiting

Provisioning operations dibatasi untuk mencegah overload pada device target.

PlanProvisions/jamConcurrentDevices Max
Pro50310
Enterprise50020Unlimited

Error Codes

CodeMeaningResolution
PV-001Device unreachable — target perangkat tidak merespons SSH/APIVerifikasi konektivitas jaringan dan credential device
PV-002Config validation failed — konfigurasi tidak lolos pre-checkReview config template dan parameter input
PV-003Rollback triggered — eksekusi gagal, state dikembalikanCek log rollback untuk detail kegagalan
PV-004Billing sync timeout — engine billing tidak meresponsRetry otomatis aktif, eskalasi jika persisten
PV-005Capacity exceeded — node target sudah penuhGunakan auto-placement atau pilih node lain
PV-006Duplicate provision — pelanggan sudah aktif di deviceGunakan endpoint update atau deactivate terlebih dahulu

Observability Metrics

MetricUnitDeskripsi
pv.provision.duration_msmsDurasi total provisioning end-to-end
pv.provision.success_rate%Persentase provisioning berhasil
pv.rollback.countcount/hrJumlah rollback per jam
pv.device.response_timemsWaktu respons device target
pv.billing.sync_lagmsLag sinkronisasi ke billing engine
pv.queue.pendingcountJumlah provisioning dalam antrian

Webhook Events

Provisioning API mengirim webhook ke URL yang dikonfigurasi tenant untuk setiap perubahan status.

# Event Types

provision.started — Provisioning dimulai

provision.step_completed — Satu step selesai

provision.completed — Seluruh provisioning berhasil

provision.failed — Provisioning gagal

provision.rolled_back — Rollback selesai

device.status_changed — Device online/offline

# Webhook Payload

{

"event": "provision.completed",

"provision_id": "prov_abc123",

"tenant_id": "mitra_abc123",

"timestamp": "2026-05-19T00:00:02.340Z",

"data": { ... }

}

Lanjut ke Sovereign Autoscale Kembali ke Neural Core