https://monitoring.xampah.com/api

Dokumentasi API

Sistem Monitoring Biogas & Pengelolaan Sampah — Depok · Jatisari · Indramayu · JakBar

Base URL
https://monitoring.xampah.com/api

Cara Memakai API Ini

Panduan integrasi lengkap untuk RMC API

Autentikasi

Semua data (GET) butuh X-API-KEY dengan scope read, atau token Authorization: Bearer dari POST /login. Hanya /ping dan /test-cors yang publik.

Base URL

Semua endpoint relatif terhadap: https://monitoring.xampah.com/api/

Batas Login

POST /login: maks 10 percobaan per menit per IP (lalu 429).

Hak Akses per Endpoint

Setiap endpoint di bawah diberi label akses. Label diambil langsung dari aturan di server, jadi selalu sesuai dengan yang benar-benar diberlakukan.

Label Cara mengakses
Publik Tanpa autentikasi.
API key (read) / login Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.
API key perangkat Header X-API-KEY (scope * — key read-only ditolak 403).
Authorization: Bearer token dari POST /login.
Mendapatkan API Key
Key diberikan oleh administrator sistem: minta key read untuk dashboard dan integrasi, atau key perangkat untuk hardware yang mengirim data. Key hanya untuk server / perangkat, jangan di kode browser: key di JavaScript browser bisa dilihat siapa saja. Aplikasi di browser login dengan POST /login dan memakai token Bearer.
Header
Accept: application/json (selalu; error validasi jadi JSON 422)
Content-Type: application/json (POST/PUT dengan body JSON)
X-API-KEY: sk_... (server/perangkat)  atau  Authorization: Bearer {token} (login)
Format Respons
{
  "success": true,           // true jika berhasil
  "message": "...",          // pesan (opsional)
  "data": {},                // isi (objek atau array)
  "pagination": {            // pada endpoint berhalaman (pada sebagian bernama "meta")
    "current_page": 1,
    "per_page": 25,
    "total": 100,
    "last_page": 4
  }
}
Kode Status
HTTP Arti Keterangan
200OKBerhasil
201CreatedData dibuat
401UnauthorizedTidak ada / salah X-API-KEY atau token login
403ForbiddenKredensial valid tapi tidak berhak (mis. key read-only untuk kirim data, bukan admin)
404Not FoundData atau endpoint tidak ada
409ConflictData ganda (mis. truk sama dalam 1 menit)
422Unprocessable EntityValidasi gagal; detail di errors
429Too Many RequestsTerlalu banyak percobaan login / tap kartu ganda
500Server ErrorKesalahan server
Alur Login (aplikasi browser)
1. Login
curl -X POST https://monitoring.xampah.com/api/login \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "your_password"}'

# respons:
# {"success": true, "data": {"user": {...}, "token": "12|xxxx", "token_type": "Bearer"}}
2. Pakai token untuk membaca data
curl https://monitoring.xampah.com/api/getCustomer \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 12|xxxx"

# Ganti token:  POST /refresh   (Bearer)
# Keluar:       POST /logout    (Bearer)
Contoh Alur Kerja

Alur Petugas Pilah

1 Daftarkan kartu: POST /register-card-member
2 Catat absensi: POST /attendance
3 Simpan berat sampah: POST /scavengers/save-mlo
4 Lihat peringkat: GET /scavengers/users
5 Ambil total berat: GET /scavengers/total-weight

Monitoring Biogas

1 Kirim data Depok: POST /biogas
2 Kirim data Jatisari: POST /biogas/jatisari/push
3 Kirim data Indramayu: POST /biogas/indramayu/push
4 Ambil data terbaru: GET /biogas-data/latest
5 Lihat statistik: GET /biogas-data/stats

Timbangan Kendaraan

1 Catat masuk: POST /weightDataIn
2 Catat keluar: POST /weightDataOut
3 Ambil riwayat: GET /weight/data
4 Rekap & MLO: GET /recap/waste
Contoh Kode
PHP - cURL
<?php
// Contoh PHP cURL - simpan berat MLO
$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://monitoring.xampah.com/api/scavengers/save-mlo',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'X-API-KEY: sk_xxxxxxxxxxxxxxxxxxxxxxxxx',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'user_id' => 1,
        'weight'  => 5.5,
    ]),
]);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo curl_error($ch);
}

curl_close($ch);
echo $response;
JavaScript - Fetch API
// Contoh JavaScript Fetch
async function saveMlo(userId, weight) {
    const response = await fetch(
        'https://monitoring.xampah.com/api/scavengers/save-mlo',
        {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-API-KEY': 'sk_xxxxxxxxxxxxxxxxxxxxxxxxx',
            },
            body: JSON.stringify({ user_id: userId, weight }),
        }
    );

    const data = await response.json();
    console.log(data);
}

saveMlo(1, 5.5);
Python - Requests
# Contoh Python Requests
import requests

url     = "https://monitoring.xampah.com/api/scavengers/save-mlo"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY":    "sk_xxxxxxxxxxxxxxxxxxxxxxxxx",
}
data = {"user_id": 1, "weight": 5.5}

response = requests.post(url, json=data, headers=headers, timeout=10)

print("Status:", response.status_code)
print(response.json())

Endpoint API Umum

Autentikasi, API key, user & role, kesehatan & riwayat sensor semua lokasi, dan Fleet (OTA / MQTT) untuk semua gateway

Status Server
GET
/ping
Cek server hidup (publik, tanpa data)
Publik Coba

Akses: Tanpa autentikasi.

bash
curl "https://monitoring.xampah.com/api/ping" \
  -H "Accept: application/json"
json
{"status": "ok", "time": "2026-10-01 15:40:00"}
GET
/test-cors
Cek CORS dari browser (publik, tanpa data)
Publik Coba

Akses: Tanpa autentikasi.

bash
curl "https://monitoring.xampah.com/api/test-cors" \
  -H "Accept: application/json"
GET
/db-test
Cek koneksi database
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/db-test" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"status": "success"}
Login Dashboard Admin (Sanctum)
POST
/login
Login user dashboard admin; token dipakai sebagai Authorization: Bearer
Publik

Akses: Tanpa autentikasi.

username boleh berisi username atau email. Login menghapus token lama user itu (perangkat lain otomatis keluar). Akun admin/superadmin dengan check_session=true: bila masih aktif di perangkat lain (dipakai ≤ 30 menit terakhir) jawabannya 409 {code: session_active, data: {device, last_activity}}; kirim ulang dengan force=true untuk mengeluarkan perangkat itu. Maks 10 percobaan per menit per IP (429).

Parameter Tipe Wajib Keterangan
username string wajib Username atau email
password string wajib Password
check_session boolean opsional Panel admin: tanya dulu bila akun aktif di perangkat lain
force boolean opsional Tetap login dan keluarkan perangkat lain
bash
curl -X POST "https://monitoring.xampah.com/api/login" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "••••••••"}'
json
{"username": "admin", "password": "••••••••"}
json
{"success": true, "message": "Login successful", "data": {"user": {"id": 1, "name": "Admin", "username": "admin", "email": "..."}, "token": "12|xxxxxxxx", "token_type": "Bearer"}}
GET
/user
User yang sedang login

Akses: Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/user" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token dari POST /login>"
POST
/refresh
Ganti token dengan token baru

Akses: Authorization: Bearer token dari POST /login.

bash
curl -X POST "https://monitoring.xampah.com/api/refresh" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token dari POST /login>"
POST
/logout
Cabut token yang sedang dipakai

Akses: Authorization: Bearer token dari POST /login.

bash
curl -X POST "https://monitoring.xampah.com/api/logout" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token dari POST /login>"
json
{"success": true, "message": "Logout successful"}
User & Role
GET
/roles
Daftar role + jumlah user
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/roles" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/roles/{id}
Satu role beserta user-nya
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID role
bash
curl "https://monitoring.xampah.com/api/roles/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/users
Daftar user (berhalaman, bisa dicari)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
search string opsional Nama/username/email
role string opsional Nama role
role_id integer opsional ID role
page integer opsional Halaman
per_page integer opsional Baris per halaman (maks 200)
bash
curl "https://monitoring.xampah.com/api/users?role=admin&per_page=50" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/users/stats
Jumlah user per role
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/users/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/users/by-role/{role}
User dengan role tertentu
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
role string (path) wajib Nama role
bash
curl "https://monitoring.xampah.com/api/users/by-role/{role}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/users/{id}
Detail user (dengan role dan daftar API key-nya, tanpa nilai key)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID user
bash
curl "https://monitoring.xampah.com/api/users/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Kesehatan & Riwayat Sensor (Semua Lokasi)
GET
/history/{source}
Riwayat sensor pada rentang tanggal: rata-rata per bucket waktu + statistik persis (min/rata/maks/terakhir)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

source: depok-biogas, depok-incinerator-1, depok-incinerator-2, indramayu-biogas, jatisari-biogas. Lebar bucket mengikuti panjang rentang: ≤1 hari 5 menit, ≤3 hari 15 menit, ≤14 hari 1 jam, ≤62 hari 6 jam, selebihnya 1 hari. Rentang maks 366 hari. t = awal bucket (WIB).

Parameter Tipe Wajib Keterangan
source string (path) wajib Sumber data (lihat keterangan)
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif)
fields string opsional Kolom dipisah koma, mis. ph_1,ph_2; default semua kolom sumber
bash
curl "https://monitoring.xampah.com/api/history/{source}?start_date=2026-09-24&end_date=2026-09-30&fields=Tmp_Icn,Tmp_Prl" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{
  "success": true, "source": "depok-incinerator-1", "label": "Incinerator 1",
  "start_date": "2026-09-24", "end_date": "2026-09-30", "bucket_seconds": 3600,
  "fields": [{"key": "Tmp_Icn", "label": "Tmp_Icn", "unit": "°C"}],
  "stats": {"Tmp_Icn": {"current": 678, "minimum": 40, "average": 388.12, "maximum": 769}},
  "count": 168,
  "points": [{"t": "2026-09-24 00:00:00", "n": 6, "Tmp_Icn": 151.5}]
}

Endpoint API Depok

Biogas, suhu insinerator, timbangan truk, timbangan pilah (scavengers), rekap sampah & MLO, kartu RFID, absensi

Biogas
POST
/biogas
Kirim satu pembacaan biogas per jam dari gateway ESP32 (esp_depok_2025)
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Form-urlencoded atau JSON. Kirim Accept: application/json agar error validasi dibalas 422 JSON. Balloon_1..4 = level isi (%), 0 berarti tidak ada bacaan.

Parameter Tipe Wajib Keterangan
ph_1 number wajib pH reaktor 1
ph_2 number wajib pH reaktor 2
ph_3 number wajib pH reaktor 3
ph_4 number wajib pH reaktor 4
ph_5 number wajib pH reaktor 5
ph_6 number wajib pH reaktor 6
ph_7 number wajib pH reaktor 7
gas_value_1 number wajib Gas meter 1 (m³)
pressureGas_1 number wajib Tekanan gas 1 (kPa)
temperatureGas_1 number wajib Suhu gas 1 (°C)
gas_value_2 number wajib Gas meter 2 (m³)
pressureGas_2 number wajib Tekanan gas 2 (kPa)
temperatureGas_2 number wajib Suhu gas 2 (°C)
Balloon_1 number wajib Level balon 1 (%)
Balloon_2 number wajib Level balon 2 (%)
Balloon_3 number wajib Level balon 3 (%)
Balloon_4 number wajib Level balon 4 (%)
bash
curl -X POST "https://monitoring.xampah.com/api/biogas" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"ph_1":7.12,"ph_2":7.05,"ph_3":6.98,"ph_4":7.20,"ph_5":7.01,"ph_6":6.95,"ph_7":7.10, "gas_value_1":85.5,"pressureGas_1":2.1,"temperatureGas_1":35.2, "gas_value_2":42.3,"pressureGas_2":1.9,"temperatureGas_2":34.8, "Balloon_1":61.05,"Balloon_2":58.42,"Balloon_3":0,"Balloon_4":72.63}'
json
{"ph_1":7.12,"ph_2":7.05,"ph_3":6.98,"ph_4":7.20,"ph_5":7.01,"ph_6":6.95,"ph_7":7.10,
 "gas_value_1":85.5,"pressureGas_1":2.1,"temperatureGas_1":35.2,
 "gas_value_2":42.3,"pressureGas_2":1.9,"temperatureGas_2":34.8,
 "Balloon_1":61.05,"Balloon_2":58.42,"Balloon_3":0,"Balloon_4":72.63}
json
{"success": true}
GET
/biogas-data
Data biogas terbaru (daftar, tanpa paginasi)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/biogas-data" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas-data/latest
Satu pembacaan biogas paling baru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/biogas-data/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success": true, "data": {"id": 20512345, "ph_1": 7.2, "gas_value_1": 85.5, "Balloon_1": 61.05, "created_at": "2026-10-01T08:00:00.000000Z"}}
GET
/biogas-data/paginated
Riwayat biogas per halaman, terbaru dulu
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
page integer opsional (bawaan: 1) Halaman
per_page integer opsional (bawaan: 15) Baris per halaman (maks 100)
bash
curl "https://monitoring.xampah.com/api/biogas-data/paginated?page=1&per_page=50" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas-data/date-range
Data biogas dalam rentang tanggal
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
limit integer opsional Maks baris
bash
curl "https://monitoring.xampah.com/api/biogas-data/date-range?start_date=2026-09-01&end_date=2026-09-30" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas-data/stats
Ringkasan statistik biogas
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/biogas-data/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas-data/{id}
Satu pembacaan biogas berdasarkan id
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID baris biogas_data
bash
curl "https://monitoring.xampah.com/api/biogas-data/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Suhu Insinerator & Pirolisis
POST
/tempMonitor
Kirim suhu Insinerator 1 (Tmp_Icn, Tmp_Dct, Tmp_Prl) dari controller ICN
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
Tmp_Icn number wajib Suhu insinerator (°C)
Tmp_Dct number wajib Suhu ICN-2 / ducting (°C)
Tmp_Prl number wajib Suhu chamber/pirolisis (°C)
bash
curl -X POST "https://monitoring.xampah.com/api/tempMonitor" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"Tmp_Icn": 712, "Tmp_Dct": 655, "Tmp_Prl": 680}'
json
{"Tmp_Icn": 712, "Tmp_Dct": 655, "Tmp_Prl": 680}
json
{"Success": true}
POST
/tempMonitor2
Kirim suhu Insinerator 2 (7 kolom) dari monitor ICN-2 (firmware Temperature-Monitoring-ICN-2-, butuh X-API-KEY; Tmp_IcnJ1/Tmp_DctJ1 dikirim 0, sensor fault dikirim 0)
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
Tmp_IcnJ1 number wajib ICN (°C)
Tmp_DctJ1 number wajib Ducting (°C)
Tmp_CmbJ1 number wajib Chamber-1 (°C)
Tmp_PrlJ1_1 number wajib Pirolisis 1 (°C)
Tmp_PrlJ1_2 number wajib Pirolisis 2 (°C)
Tmp_PrlJ1_3 number wajib Pirolisis 3 (°C)
Tmp_PrlJ1_4 number wajib Pirolisis 4 (°C)
bash
curl -X POST "https://monitoring.xampah.com/api/tempMonitor2" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"Tmp_IcnJ1":720,"Tmp_DctJ1":640,"Tmp_CmbJ1":690,"Tmp_PrlJ1_1":410,"Tmp_PrlJ1_2":398,"Tmp_PrlJ1_3":380,"Tmp_PrlJ1_4":372}'
json
{"Tmp_IcnJ1":720,"Tmp_DctJ1":640,"Tmp_CmbJ1":690,"Tmp_PrlJ1_1":410,"Tmp_PrlJ1_2":398,"Tmp_PrlJ1_3":380,"Tmp_PrlJ1_4":372}
json
{"success": true, "data": {"id": 10512345, "Tmp_IcnJ1": 720, ...}}
GET
/temp-data
Suhu Insinerator 1: realtime (range) atau semua data pada rentang tanggal (start_date & end_date, berhalaman)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Tanpa start_date/end_date: data terbaru menurut range, maks limit baris. Dengan start_date & end_date: SEMUA pembacaan di rentang itu, terbaru dulu, berhalaman; meta berisi total & last_page. Rentang maks 366 hari.

Parameter Tipe Wajib Keterangan
range today|week|month opsional (bawaan: today) Mode realtime
limit integer opsional (bawaan: 500) Mode realtime: maks baris (maks 1000)
start_date date (Y-m-d) opsional Mode rentang: tanggal awal
end_date date (Y-m-d) opsional Mode rentang: tanggal akhir
page integer opsional (bawaan: 1) Mode rentang: halaman
per_page integer opsional (bawaan: 100) Mode rentang: baris per halaman (maks 500)
bash
curl "https://monitoring.xampah.com/api/temp-data?start_date=2026-09-25&end_date=2026-10-01&page=1&per_page=100" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success": true, "data": [{"id": 20500123, "Tmp_Icn": 678, "Tmp_Dct": 658, "Tmp_Prl": 671, "created_at": "..."}], "meta": {"page": 1, "per_page": 100, "total": 959, "last_page": 10}}
GET
/temp-data/latest
Satu pembacaan Insinerator 1 terbaru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/temp-data/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/temp-data/{id}
Pembacaan Insinerator 1 berdasarkan id
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID baris temp_monitors
bash
curl "https://monitoring.xampah.com/api/temp-data/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/temp2-data
Suhu Insinerator 2: realtime atau rentang tanggal (sama seperti /temp-data)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
range today|week|month opsional (bawaan: today) Mode realtime
limit integer opsional (bawaan: 500) Mode realtime: maks baris (maks 1000)
start_date date (Y-m-d) opsional Mode rentang: tanggal awal
end_date date (Y-m-d) opsional Mode rentang: tanggal akhir
page integer opsional (bawaan: 1) Mode rentang: halaman
per_page integer opsional (bawaan: 100) Mode rentang: baris per halaman (maks 500)
bash
curl "https://monitoring.xampah.com/api/temp2-data?range=today" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/temp2-data/range
Insinerator 2 dalam rentang tanggal (versi lama, maks limit baris)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
limit integer opsional (bawaan: 1000) Maks baris (maks 5000)
bash
curl "https://monitoring.xampah.com/api/temp2-data/range?start_date=2026-09-01&end_date=2026-09-07" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/temp2-data/latest
Satu pembacaan Insinerator 2 terbaru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/temp2-data/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/temp2-data/{id}
Pembacaan Insinerator 2 berdasarkan id
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID baris temp_monitor2
bash
curl "https://monitoring.xampah.com/api/temp2-data/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Timbangan Truk (Sampah Masuk)
GET
/weight/data
Transaksi truk + ringkasan (target harian, per jam, tren 30 hari, top pelanggan) untuk satu hari/minggu/bulan/tahun atau rentang
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

period + date memilih periode di sekitar tanggal itu. today_stats (target, total, per jam) dan tren 30 hari mengikuti tanggal yang dipilih.

Parameter Tipe Wajib Keterangan
period daily|weekly|monthly|yearly|custom opsional (bawaan: daily) Periode
date date (Y-m-d) opsional (bawaan: hari ini) Tanggal acuan
start_date date opsional Rentang khusus: awal (wajib bersama end_date)
end_date date opsional Rentang khusus: akhir
limit integer opsional (bawaan: 100) Transaksi per halaman (maks 1000)
page integer opsional (bawaan: 1) Halaman
driver_id integer opsional Filter sopir
customer_id integer opsional Filter pelanggan
no_order string opsional Cari no. order
is_completed boolean opsional true = sudah timbang keluar, false = belum
min_net_weight number opsional Netto minimum
max_net_weight number opsional Netto maksimum
sort_by created_at|time_in|time_out|weight_in|weight_out opsional (bawaan: created_at) Urutan
sort_direction asc|desc opsional (bawaan: desc) Arah
target_daily_tons number opsional (bawaan: 10) Target harian (ton)
use_cache boolean opsional (bawaan: true) Pakai cache 30 dtk
bash
curl "https://monitoring.xampah.com/api/weight/data?period=daily&date=2026-09-30&limit=1000" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/getCustomer
Daftar semua pelanggan (customers)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/getCustomer" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Timbangan Pilah (Scavengers)
GET
/scavengers/users
Daftar petugas pilah + peringkat berat pada satu hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
date date (Y-m-d) opsional (bawaan: hari ini) Tanggal
bash
curl "https://monitoring.xampah.com/api/scavengers/users?date=2026-09-30" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavengers/users/{user_id}
Detail timbangan satu petugas pilah
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
user_id integer (path) wajib ID petugas
date date (Y-m-d) opsional (bawaan: hari ini) Tanggal
page integer opsional Halaman
limit integer opsional Baris per halaman
bash
curl "https://monitoring.xampah.com/api/scavengers/users/{user_id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavengers/user/{id}
Nama & email satu user
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib users.id
bash
curl "https://monitoring.xampah.com/api/scavengers/user/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavengers/weight
10 timbangan pilah terakhir
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/scavengers/weight" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavengers/total-weight
Total berat per jenis sampah pada satu hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
date date (Y-m-d) opsional (bawaan: hari ini) Tanggal
user_id integer opsional Hanya petugas ini
bash
curl "https://monitoring.xampah.com/api/scavengers/total-weight" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavengers/total-weight-range
Total berat per jenis sampah pada rentang tanggal
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
user_id integer opsional Hanya petugas ini
bash
curl "https://monitoring.xampah.com/api/scavengers/total-weight-range?start_date=2026-09-01&end_date=2026-09-30" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
POST
/scavengers/save-mlo
Simpan berat MLO (organik) (kolom mlo) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-mlo" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'mlo' berhasil disimpan."}
POST
/scavengers/save-plastic
Simpan berat plastik (kolom plastic) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-plastic" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'plastic' berhasil disimpan."}
POST
/scavengers/save-gabruk
Simpan berat gabruk (kolom gabruk) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gabruk" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gabruk' berhasil disimpan."}
POST
/scavengers/save-botol-plastik
Simpan berat botol plastik (kolom botol_plastik) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-botol-plastik" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'botol_plastik' berhasil disimpan."}
POST
/scavengers/save-kertas
Simpan berat kertas (kolom kertas) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-kertas" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'kertas' berhasil disimpan."}
POST
/scavengers/save-kardus
Simpan berat kardus (kolom kardus) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-kardus" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'kardus' berhasil disimpan."}
POST
/scavengers/save-botol-kaca
Simpan berat botol kaca (kolom botol_kaca) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-botol-kaca" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'botol_kaca' berhasil disimpan."}
POST
/scavengers/save-aqua-gelas
Simpan berat aqua gelas (kolom aqua_gelas) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-aqua-gelas" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'aqua_gelas' berhasil disimpan."}
POST
/scavengers/save-incenerator
Simpan berat bahan insinerator 1 (kolom incenerator) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-incenerator" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'incenerator' berhasil disimpan."}
POST
/scavengers/save-incenerator2
Simpan berat bahan insinerator 2 (kolom incenerator_2) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-incenerator2" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'incenerator_2' berhasil disimpan."}
POST
/scavengers/save-pirolisis
Simpan berat pirolisis (kolom pirolisis) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-pirolisis" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'pirolisis' berhasil disimpan."}
POST
/scavengers/save-pirolisis2
Simpan berat pirolisis 2 (kolom pirolisis_2) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-pirolisis2" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'pirolisis_2' berhasil disimpan."}
POST
/scavengers/save-bahan-prl
Simpan berat bahan pirolisis (kolom bahan_pirolisis) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-bahan-prl" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'bahan_pirolisis' berhasil disimpan."}
POST
/scavengers/save-icn-today
Simpan berat siap bakar (kolom siap_bakar) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-icn-today" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'siap_bakar' berhasil disimpan."}
POST
/scavengers/save-botol-biru
Simpan berat botol biru (kolom botol_biru) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-botol-biru" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'botol_biru' berhasil disimpan."}
POST
/scavengers/save-gelas-polos
Simpan berat gelas polos (kolom gelas_polos) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelas-polos" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelas_polos' berhasil disimpan."}
POST
/scavengers/save-gelas-warna
Simpan berat gelas warna (kolom gelas_warna) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelas-warna" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelas_warna' berhasil disimpan."}
POST
/scavengers/save-gelas-polos-bunga
Simpan berat gelas bunga besar (kolom gelas_bunga_besar) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelas-polos-bunga" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelas_bunga_besar' berhasil disimpan."}
POST
/scavengers/save-gelas-yakult-kecil
Simpan berat gelas yakult kecil (kolom gelas_yakult_kecil) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelas-yakult-kecil" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelas_yakult_kecil' berhasil disimpan."}
POST
/scavengers/save-gelas-yakult-besar
Simpan berat gelas yakult besar (kolom gelas_yakult_besar) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelas-yakult-besar" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelas_yakult_besar' berhasil disimpan."}
POST
/scavengers/save-botol-polos-putih
Simpan berat botol polos putih (kolom botol_polos_putih) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-botol-polos-putih" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'botol_polos_putih' berhasil disimpan."}
POST
/scavengers/save-atom-warna-putih
Simpan berat atom warna putih (kolom atom_warna_putih) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-atom-warna-putih" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'atom_warna_putih' berhasil disimpan."}
POST
/scavengers/save-gelang-galon
Simpan berat gelang galon (kolom gelang_galon) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-gelang-galon" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'gelang_galon' berhasil disimpan."}
POST
/scavengers/save-tutup
Simpan berat tutup (kolom tutup) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-tutup" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'tutup' berhasil disimpan."}
POST
/scavengers/save-tutup-galon-besar
Simpan berat tutup galon besar (kolom tutup_galon_besar) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-tutup-galon-besar" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'tutup_galon_besar' berhasil disimpan."}
POST
/scavengers/save-impek-regas
Simpan berat impek regas (kolom impek_regas) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-impek-regas" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'impek_regas' berhasil disimpan."}
POST
/scavengers/save-emperan-warna-warni
Simpan berat emperan warna-warni (kolom emperan_warna_warni) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-emperan-warna-warni" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'emperan_warna_warni' berhasil disimpan."}
POST
/scavengers/save-mainan-warna
Simpan berat mainan warna (kolom mainan_warna) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-mainan-warna" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'mainan_warna' berhasil disimpan."}
POST
/scavengers/save-botol-bening-lemes
Simpan berat botol bening lemes (kolom botol_bening_lemes) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-botol-bening-lemes" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'botol_bening_lemes' berhasil disimpan."}
POST
/scavengers/save-asoy
Simpan berat asoy (kolom asoy) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-asoy" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'asoy' berhasil disimpan."}
POST
/scavengers/save-duplex
Simpan berat duplex (kolom duplex) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-duplex" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'duplex' berhasil disimpan."}
POST
/scavengers/save-styrofoam
Simpan berat styrofoam (kolom styrofoam) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-styrofoam" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'styrofoam' berhasil disimpan."}
POST
/scavengers/save-rdf
Simpan berat hasil gibrik (RDF) (kolom rdf) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-rdf" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'rdf' berhasil disimpan."}
POST
/scavengers/save-residu
Simpan berat residu (kolom residu) dari timbangan pilah
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
card_id integer opsional ID kartu RFID (scavenger_member_cards.id) = card_id dari GET /get-member. Wajib bila user_id kosong; yang dipakai timbangan pilah
user_id integer opsional ID akun petugas (users.id). Wajib bila card_id kosong
weight number wajib Berat dalam kg, ≥ 0
bash
curl -X POST "https://monitoring.xampah.com/api/scavengers/save-residu" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"card_id": 7, "weight": 4.35}'
json
{"card_id": 7, "weight": 4.35}
json
{"success": true, "message": "Data 'residu' berhasil disimpan."}
Rekap Sampah & MLO
GET
/recap/waste
Rekap harian/mingguan/bulanan: sampah masuk, sampah pilah, potongan & MLO, per jenis, per pelanggan
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

MLO (Material Limbah Organik) = (weight_in − weight_out) − Bahan Pirolisis − Bahan Insinerator (incenerator + incenerator_2) − Gabruk, dari config/waste.php. Hanya truk yang sudah timbang keluar yang dihitung. group default: ≤31 hari harian, ≤186 hari mingguan, selebihnya bulanan. Rentang maks 731 hari; harian maks 186 hari.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
group day|week|month opsional (bawaan: otomatis) Pengelompokan
bash
curl "https://monitoring.xampah.com/api/recap/waste?start_date=2026-09-01&end_date=2026-09-30&group=day" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{
  "success": true, "start_date": "2026-09-01", "end_date": "2026-09-30", "group": "day",
  "formula": {"text": "MLO = (Berat Masuk - Berat Keluar) - Bahan Pirolisis - Bahan Insinerator - Gabruk", "deductions": [...]},
  "totals": {"transactions": 486, "completed": 484, "pending": 2, "weight_in": 4872100, "weight_out": 1707600, "net": 3164500,
             "deductions": {"bahan_pirolisis": 366559, "bahan_incenerator": 273496, "gabruk": 166327},
             "mlo": 2358118, "mlo_scale": 860471, "sorted_total": 1737106.9, "sorted_entries": 217},
  "composition": [{"key": "mlo", "label": "MLO (Organik)", "kg": 2358118, "share": 74.5}, ...],
  "periods": [{"key": "2026-09-01", "label": "Sel, 1 Sep 2026", "start": "2026-09-01", "end": "2026-09-01", "net": 102200, "mlo": 73119, ...}],
  "sorted_by_type": [{"key": "mlo", "label": "MLO (Organik)", "kg": 860471, "share": 49.5}, ...],
  "customers": [{"customer_id": 1, "name": "Pasar Kemiri Muka", "transactions": 80, "net": 520000}]
}
GET
/recap/waste/transactions
Daftar timbangan truk pada rentang tanggal (berhalaman, bisa dicari)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
status all|completed|pending opsional (bawaan: all) Filter status
search string opsional No. order, pelanggan, sopir atau no. polisi
page integer opsional (bawaan: 1) Halaman
per_page integer opsional (bawaan: 25) Baris per halaman (maks 100)
bash
curl "https://monitoring.xampah.com/api/recap/waste/transactions?start_date=2026-09-01&end_date=2026-09-30&status=completed&search=Pasar" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/recap/waste/sorted
Daftar timbangan pilah pada rentang tanggal, dengan rincian jenis yang tidak nol
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) wajib Tanggal awal (inklusif)
end_date date (Y-m-d) wajib Tanggal akhir (inklusif), tidak sebelum start_date
search string opsional No. order atau nama petugas
page integer opsional (bawaan: 1) Halaman
per_page integer opsional (bawaan: 25) Baris per halaman (maks 100)
bash
curl "https://monitoring.xampah.com/api/recap/waste/sorted?start_date=2026-09-30&end_date=2026-09-30" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Kartu RFID (Sopir & Petugas Pilah)
GET
/get-member
Cari petugas pilah dari UID kartu RFID (dipakai timbangan pilah)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
uid string wajib UID kartu, mis. B29BCC4D
bash
curl "https://monitoring.xampah.com/api/get-member?uid=B29BCC4D" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success": true, "data": {"id": 7, "uid": "B29BCC4D", "name": "Momoh", "role_id": 1}}
GET
/scavenger-cards
Daftar kartu petugas pilah
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
search string opsional Cari nama/UID
page integer opsional Halaman
per_page integer opsional Baris per halaman
bash
curl "https://monitoring.xampah.com/api/scavenger-cards" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/scavenger-cards/{id}
Satu kartu petugas pilah
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID kartu
bash
curl "https://monitoring.xampah.com/api/scavenger-cards/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/card-members
Daftar kartu sopir truk
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
search string opsional Cari
page integer opsional Halaman
per_page integer opsional Baris per halaman
bash
curl "https://monitoring.xampah.com/api/card-members" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/card-members/{id}
Satu kartu sopir
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
id integer (path) wajib ID kartu
bash
curl "https://monitoring.xampah.com/api/card-members/{id}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/getMember
Alias lama GET /card-members
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/getMember" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Absensi Operator (RFID)
POST
/attendance
Tap kartu: absen masuk, tap berikutnya absen keluar
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Tap ulang dalam 1 menit ditolak (429).

Parameter Tipe Wajib Keterangan
uid string wajib UID kartu
operator_name string wajib Nama operator
timestamp datetime wajib Waktu tap
bash
curl -X POST "https://monitoring.xampah.com/api/attendance" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"uid": "B29BCC4D", "operator_name": "Momoh", "timestamp": "2026-10-01 07:58:00"}'
json
{"uid": "B29BCC4D", "operator_name": "Momoh", "timestamp": "2026-10-01 07:58:00"}
json
{"success": true, "data": {"action": "time_in", ...}}
GET
/attendance/list
Semua absensi (berhalaman)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date opsional Dari
end_date date opsional Sampai
uid string opsional Filter UID
page integer opsional Halaman
per_page integer opsional Baris per halaman
bash
curl "https://monitoring.xampah.com/api/attendance/list" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/attendance/today
Absensi hari ini
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/attendance/today" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/attendance/present
Operator yang sedang hadir (sudah masuk, belum keluar)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/attendance/present" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/attendance/stats
Statistik absensi
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date opsional Dari
end_date date opsional Sampai
bash
curl "https://monitoring.xampah.com/api/attendance/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/attendance/history
Riwayat absensi satu operator
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
operator string wajib Nama operator
start_date date opsional Dari
end_date date opsional Sampai
limit integer opsional Maks baris
bash
curl "https://monitoring.xampah.com/api/attendance/history?operator=Momoh" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/attendance/user/{uid}
Absensi berdasarkan UID kartu
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
uid string (path) wajib UID kartu
limit integer opsional Maks baris
bash
curl "https://monitoring.xampah.com/api/attendance/user/{uid}" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"

Endpoint API Jatisari

Monitoring produksi biogas dan pencatatan timbangan untuk lokasi Jatisari

Monitoring Biogas
POST
/biogas/jatisari/push
Kirim pembacaan sensor baru
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
ph float wajib pH cairan digester
temp_liquid float wajib Suhu cairan (°C)
temp_ambien float wajib Suhu lingkungan (°C)
weight float wajib Berat umpan (kg)
gas_prod float wajib Produksi gas (L/jam)
temp_gas_prod float wajib Suhu gas produksi (°C)
pressure_gas_prod float wajib Tekanan gas produksi (bar)
gas_used float wajib Gas terpakai (L/jam)
temp_gas_used float wajib Suhu gas terpakai (°C)
pressure_gas_used float wajib Tekanan gas terpakai (bar)
balloon_level_1 float opsional Level balon 1 (%)
balloon_level_2 float opsional Level balon 2 (%)
storage float opsional Volume penyimpanan (m³)
bash
curl -X POST "https://monitoring.xampah.com/api/biogas/jatisari/push" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/jatisari/latest
Pembacaan biogas terbaru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/biogas/jatisari/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/jatisari/history
Data deret waktu per jendela jam
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
hours integer opsional (bawaan: 24) Rentang ke belakang dalam jam
bash
curl "https://monitoring.xampah.com/api/biogas/jatisari/history" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/jatisari/stats
Statistik ringkasan selama N hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
days integer opsional (bawaan: 7) Jumlah hari yang dirangkum
bash
curl "https://monitoring.xampah.com/api/biogas/jatisari/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
Monitoring Timbangan
POST
/weight/push
Kirim bacaan berat dari timbangan
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
weight float wajib Berat dalam kg (min: 0.01)
bash
curl -X POST "https://monitoring.xampah.com/api/weight/push" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/weight/latest
Bacaan berat terbaru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/weight/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/weight/history
Riwayat berat per jendela jam
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
hours integer opsional (bawaan: 24) Rentang ke belakang dalam jam
bash
curl "https://monitoring.xampah.com/api/weight/history" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/weight/stats
Statistik berat selama N hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
days integer opsional (bawaan: 7) Jumlah hari yang dirangkum
bash
curl "https://monitoring.xampah.com/api/weight/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
POST
/weight/jatisari/push
Kirim bacaan timbangan Jatisari (sama dengan /weight/push)
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
weight number wajib Berat (kg), minimal 0.01
bash
curl -X POST "https://monitoring.xampah.com/api/weight/jatisari/push" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"weight": 152.4}'
json
{"weight": 152.4}
GET
/weight/jatisari/latest
Bacaan timbangan terbaru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/weight/jatisari/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/weight/jatisari/history
Riwayat timbangan per jendela jam
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
hours integer opsional (bawaan: 24) Rentang ke belakang (jam)
limit integer opsional Maks baris
bash
curl "https://monitoring.xampah.com/api/weight/jatisari/history?hours=48" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/weight/jatisari/stats
Statistik timbangan N hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
days integer opsional (bawaan: 7) Jumlah hari
bash
curl "https://monitoring.xampah.com/api/weight/jatisari/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"

Endpoint API Indramayu

Monitoring produksi dan konsumsi biogas untuk lokasi Indramayu

Monitoring Biogas
POST
/biogas/indramayu/push
Kirim pembacaan sensor baru
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
gas_prod float wajib Laju aliran produksi gas (L/jam)
temp_gas_prod float wajib Suhu di titik produksi (°C)
press_gas_prod float wajib Tekanan di titik produksi (bar)
gas_cons float wajib Laju aliran konsumsi gas (L/jam)
temp_gas_cons float wajib Suhu di titik konsumsi (°C)
press_gas_cons float wajib Tekanan di titik konsumsi (bar)
bash
curl -X POST "https://monitoring.xampah.com/api/biogas/indramayu/push" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/indramayu/latest
Data sensor paling baru
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

bash
curl "https://monitoring.xampah.com/api/biogas/indramayu/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/indramayu/history
Data deret waktu per jendela jam
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
hours integer opsional (bawaan: 24) Rentang ke belakang dalam jam
limit integer opsional (bawaan: 100) Maks baris yang dikembalikan (maks 500)
bash
curl "https://monitoring.xampah.com/api/biogas/indramayu/history" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/indramayu/stats
Statistik ringkasan selama N hari
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
days integer opsional (bawaan: 7) Jumlah hari yang dirangkum
bash
curl "https://monitoring.xampah.com/api/biogas/indramayu/stats" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/biogas/indramayu/paginated
Riwayat biogas per halaman, opsional dalam rentang tanggal
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
start_date date (Y-m-d) opsional Tanggal awal
end_date date (Y-m-d) opsional Tanggal akhir, tidak sebelum start_date
per_page integer opsional (bawaan: 15) Baris per halaman (maks 200)
page integer opsional (bawaan: 1) Halaman
bash
curl "https://monitoring.xampah.com/api/biogas/indramayu/paginated?start_date=2026-09-01&end_date=2026-09-30&per_page=50" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
POST
/biogas/indramayu/push-with-location
Sama seperti /push, dengan field location opsional (harus "indramayu")
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

Parameter Tipe Wajib Keterangan
gas_prod number wajib Gas produksi
temp_gas_prod number wajib Suhu gas produksi (°C)
press_gas_prod number wajib Tekanan gas produksi
gas_cons number wajib Gas terpakai
temp_gas_cons number wajib Suhu gas terpakai (°C)
press_gas_cons number wajib Tekanan gas terpakai
location string opsional Harus "indramayu" bila dikirim
bash
curl -X POST "https://monitoring.xampah.com/api/biogas/indramayu/push-with-location" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"gas_prod":120.5,"temp_gas_prod":45.2,"press_gas_prod":2.5,"gas_cons":85.3,"temp_gas_cons":42.1,"press_gas_cons":2.1,"location":"indramayu"}'
json
{"gas_prod":120.5,"temp_gas_prod":45.2,"press_gas_prod":2.5,"gas_cons":85.3,"temp_gas_cons":42.1,"press_gas_cons":2.1,"location":"indramayu"}

Endpoint API JakBar

Telemetri reaktor (hingga 20 reaktor + 16 relay per gateway) dan manajemen fleet (rollout firmware OTA, log debug MQTT, perintah jarak jauh) untuk gateway ESP32 JakBar

Telemetri Reaktor
POST
/reactor/jakbar/ingest
Kirim batch telemetri per jam (semua reaktor + relay). Butuh header X-API-KEY. Satu endpoint menangani payload telemetry dan event - server membedakannya lewat "type". Firmware 1.3.0+ menambahkan per reaktor: dist_mm (jarak ultrasonik), balloon (isi balon biogas 0-100) dan bal_st (bit0 valve terbuka, bit1 vent menyala, bit2 terlalu penuh, bit3 failsafe, bit4 belum dikalibrasi) - semuanya opsional, null bila tidak diukur.
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

bash
curl -X POST "https://monitoring.xampah.com/api/reactor/jakbar/ingest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type":"telemetry","device_id":"gateway-01","fw":"1.3.0", "uptime_ms":3600000,"slot_ts":1788159600, "reactors":[{"id":1,"gas":123.45,"ph":7.21,"lt":35.40,"at":29.10, "dist_mm":620,"balloon":82,"bal_st":1, "health":"ONLINE","gas_health":"NOPOLL","node_health":"ONLINE", "age_s":2,"faults":0}], "relays":[{"n":1,"name":"Pompa Feed 1","on":true,"left_s":1740}]}'
json
{"type":"telemetry","device_id":"gateway-01","fw":"1.3.0",
 "uptime_ms":3600000,"slot_ts":1788159600,
 "reactors":[{"id":1,"gas":123.45,"ph":7.21,"lt":35.40,"at":29.10,
               "dist_mm":620,"balloon":82,"bal_st":1,
               "health":"ONLINE","gas_health":"NOPOLL","node_health":"ONLINE",
               "age_s":2,"faults":0}],
 "relays":[{"n":1,"name":"Pompa Feed 1","on":true,"left_s":1740}]}
json
{"success":true,"batch_id":42}
POST
/reactor/jakbar/ingest
Kirim event alarm seketika (endpoint yang sama dengan telemetri, "type":"event"). Butuh header X-API-KEY. BALLOON_VALVE_OPEN/CLOSED, BALLOON_VENT_ON/OFF dan BALLOON_FAILSAFE membawa % isi balon di detail (255 = tidak diketahui).
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

bash
curl -X POST "https://monitoring.xampah.com/api/reactor/jakbar/ingest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type":"event","uptime_ms":812345,"id":7, "event":"NODE_OFFLINE","detail":0}'
json
{"type":"event","uptime_ms":812345,"id":7,
 "event":"NODE_OFFLINE","detail":0}
json
{"success":true}
POST
/reactor/jakbar/ingest
Firmware 1.4.0+: node balon tiap menit (endpoint yang sama, "type":"balloon"). Butuh header X-API-KEY. Disimpan di balloon_readings, upsert pada (device, id, slot_ts) - tidak pernah sebagai batch telemetri. sol_temp = suhu solenoid pembuangan; dist_mm/balloon/sol_temp null bila tidak diukur.
API key perangkat

Akses: Header X-API-KEY (scope * — key read-only ditolak 403).

bash
curl -X POST "https://monitoring.xampah.com/api/reactor/jakbar/ingest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type":"balloon","device_id":"gateway-01","fw":"1.4.0", "uptime_ms":3660000,"slot_ts":1788159660, "balloons":[{"id":16,"dist_mm":862,"balloon":58,"bal_st":0,"sol_temp":34.50, "health":"ONLINE","age_s":2,"faults":0}]}'
json
{"type":"balloon","device_id":"gateway-01","fw":"1.4.0",
 "uptime_ms":3660000,"slot_ts":1788159660,
 "balloons":[{"id":16,"dist_mm":862,"balloon":58,"bal_st":0,"sol_temp":34.50,
              "health":"ONLINE","age_s":2,"faults":0}]}
json
{"success":true,"count":1}
GET
/reactor/jakbar/balloons/latest
Pembacaan per menit terbaru dari setiap node balon, dengan balloon_state {vent_on, overfull, failsafe, uncalibrated, fan_on, pump_on} hasil decode bal_st.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/balloons/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/reactor/jakbar/balloons/history
Pembacaan per menit satu node balon, terbaru dulu (default 60 menit terakhir)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
reactor_id integer wajib Alamat node balon (16 di JakBar)
minutes integer opsional (bawaan: 60) Rentang ke belakang (maks 10080 = 7 hari)
limit integer opsional (bawaan: 500) Maks baris (maks 2000)
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/balloons/history?reactor_id=1" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/reactor/jakbar/latest
Batch telemetri terbaru, dibentuk ulang ke format reactors[]/relays[] yang sama dengan yang dikirim gateway. Setiap reaktor juga membawa balloon_state {valve_open, vent_on, overfull, failsafe, uncalibrated} hasil decode bal_st.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/latest" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/reactor/jakbar/history
Riwayat sensor satu reaktor pada rentang tanggal (default 7 hari terakhir)
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
reactor_id integer wajib Nomor reaktor (1-20)
start_date date opsional Y-m-d, butuh end_date juga
end_date date opsional Y-m-d, butuh start_date juga
limit integer opsional (bawaan: 200) Maks baris (maks 500)
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/history?reactor_id=1" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/reactor/jakbar/events
Event alarm terbaru (NODE_OFFLINE, GAS_OFFLINE, SENSOR_FAULT, RELAY_ON/OFF, BALLOON_VENT_ON, dll), default 24 jam terakhir
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
event_type string opsional Saring satu jenis event
hours integer opsional (bawaan: 24) Rentang ke belakang (maks 720)
limit integer opsional (bawaan: 100) Maks baris (maks 500)
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/events" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
GET
/reactor/jakbar/gas-meters
Semua gas meter (firmware 1.6.0+) berdasarkan alamat Modbus dan role: REACTOR (produksi satu reaktor), PRODUCTION_TOTAL (beberapa reaktor sekaligus), CONSUMPTION (gas terpakai). Pembacaan per jam terbaru plus counter kumulatif VALID terbaru (volume_l / volume_m3), jadi meter yang sedang offline tetap menunjukkan berapa banyak gas yang sudah melewatinya. Firmware 1.6.0+ menambahkan `live` (dari MQTT, sekitar satu menit: counter, hari ini sejak 00:00 WIB, valve, health, read_ts, age_s) dan `flow_l_min`.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/gas-meters" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success":true,"count":3,"data":[{"addr":3,"role":"CONSUMPTION","reactor":null,"label":null,"health":"ONLINE","valve_code":2,"valve":"open","slot_ts":1793750400,"age_s":3,"volume_l":1200,"volume_m3":1.2,"volume_slot_ts":1793750400}]}
GET
/reactor/jakbar/gas-meters/usage
Gas yang melewati satu meter per jam / hari / bulan (Asia/Jakarta): produksi untuk meter REACTOR atau PRODUCTION_TOTAL, gas terpakai untuk meter CONSUMPTION. Selisih pembacaan counter yang berurutan; periode tanpa data bernilai null (bukan 0) dan counter yang turun (meter diganti) dilewati dan dihitung di counter_resets.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
addr integer opsional Alamat Modbus meter (1-247); ini atau role
role REACTOR|PRODUCTION_TOTAL|CONSUMPTION opsional Pilih meter berdasarkan role bila hanya satu meter yang memilikinya
interval hour|day|month opsional (bawaan: day) Ukuran bucket (rentang maks 31 / 366 / 3660 hari)
start_date date opsional Y-m-d, butuh end_date juga (default 24 jam / 30 hari / 12 bulan terakhir)
end_date date opsional Y-m-d, inklusif
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/gas-meters/usage" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success":true,"meter":{"addr":3,"role":"CONSUMPTION","reactor":null,"label":null},"interval":"day","timezone":"Asia/Jakarta","start":"2026-11-03 00:00:00","end":"2026-11-05 00:00:00","total_usage_l":1330,"total_usage_m3":1.33,"counter_resets":0,"count":2,"data":[{"period":"2026-11-03","start_ts":1793638800,"usage_l":1000,"readings":3,"usage_m3":1}]}
GET
/reactor/jakbar/gas-meters/minutes
Pembacaan per menit satu meter dari feed MQTT live (<site>/<device_id>/meters, firmware 1.6.0+), terlama dulu: counter, liter terpakai sejak pembacaan sebelumnya (used_l) dan aliran dalam liter per menit. Meter bertenaga baterai dan dibaca sekali per menit; baris lebih dari 90 hari dihapus.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
addr integer opsional Alamat Modbus meter (1-247); ini atau role
role REACTOR|PRODUCTION_TOTAL|CONSUMPTION opsional Pilih meter berdasarkan role bila hanya satu meter yang memilikinya
minutes integer opsional (bawaan: 60) Rentang ke belakang (maks 1440)
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/gas-meters/minutes" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success":true,"meter":{"addr":3,"role":"CONSUMPTION","reactor":null,"label":null},"minutes":60,"total_used_l":84,"count":60,"data":[{"slot_ts":1793858400,"volume_l":32890,"used_l":2,"flow_l_min":2,"valve_code":2,"health":"ONLINE"}]}
GET
/reactor/jakbar/gas-meters/cumulative
Total lifetime satu meter sejak pembacaan pertama, bulan ini dan hari ini, plus total berjalan (kumulatif) per hari atau per bulan sampai hari ini (Asia/Jakarta). Selisih counter sama dengan /gas-meters/usage, jadi nilai kumulatif terakhir = lifetime dan setiap periode sama dengan /usage. Hari tanpa pembacaan bernilai usage null dan kumulatifnya tetap.
API key (read) / login

Akses: Header X-API-KEY dengan scope read atau *, atau Authorization: Bearer token dari POST /login.

Parameter Tipe Wajib Keterangan
addr integer opsional Alamat Modbus meter (1-247); ini atau role
role REACTOR|PRODUCTION_TOTAL|CONSUMPTION opsional Pilih meter berdasarkan role bila hanya satu meter yang memilikinya
interval day|month opsional (bawaan: day) Total berjalan per hari atau per bulan
device_id string opsional (bawaan: gateway-01) Gateway yang dibaca
bash
curl "https://monitoring.xampah.com/api/reactor/jakbar/gas-meters/cumulative?role=PRODUCTION_TOTAL&interval=month" \
  -H "Accept: application/json" \
  -H "X-API-KEY: sk_xxxxxxxx"
json
{"success":true,"meter":{"addr":2,"role":"PRODUCTION_TOTAL","reactor":null,"label":null},"interval":"month","timezone":"Asia/Jakarta","first_reading_at":"2026-09-30 01:00:00","last_reading_at":"2026-11-09 21:30:00","lifetime_l":98120,"lifetime_m3":98.12,"this_month_l":32218,"this_month_m3":32.218,"today_l":3105,"today_m3":3.105,"counter_resets":0,"count":3,"data":[{"period":"2026-09","usage_l":400,"usage_m3":0.4,"cumulative_l":400,"cumulative_m3":0.4},{"period":"2026-10","usage_l":65502,"usage_m3":65.502,"cumulative_l":65902,"cumulative_m3":65.902},{"period":"2026-11","usage_l":32218,"usage_m3":32.218,"cumulative_l":98120,"cumulative_m3":98.12}]}

400
Bad Request — Parameter tidak valid atau validasi gagal
401
Unauthorized — Kredensial tidak ada atau tidak valid
404
Not Found — Data atau lokasi tidak ada
429
Too Many Requests — Batas permintaan terlampaui
500
Internal Server Error — Kesalahan tak terduga di server

Uji Cepat — curl
bash
# Cek server (publik)
curl https://monitoring.xampah.com/api/ping

# Baca data: X-API-KEY (scope read)
curl -H "X-API-KEY: sk_xxxxxxxx" "https://monitoring.xampah.com/api/biogas-data/latest"

# Rekap sampah September (Depok)
curl -H "X-API-KEY: sk_xxxxxxxx" "https://monitoring.xampah.com/api/recap/waste?start_date=2026-09-01&end_date=2026-09-30"

# Atau dengan login dashboard admin
TOKEN=$(curl -s -X POST https://monitoring.xampah.com/api/login -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"..."}' | jq -r .data.token)
curl -H "Authorization: Bearer $TOKEN" https://monitoring.xampah.com/api/getCustomer

# Kirim data dari perangkat: X-API-KEY perangkat
curl -X POST https://monitoring.xampah.com/api/reactor/jakbar/ingest \
  -H "Content-Type: application/json" -H "X-API-KEY: sk_xxxxxxxx" \
  -d '{"type":"telemetry","device_id":"gateway-01","reactors":[{"id":1,"gas":123.45,"ph":7.21,"lt":35.4,"at":29.1}]}'
Disalin ke clipboard!