Dashboard Overview
Total Karyawan
419
Total Log Absensi
32,738
Absensi Hari Ini
0
Total Dealer
6
Server API Aktif & Siap
Server menerima data dari aplikasi desktop Axum via REST API. Lihat dokumentasi lengkap di bawah.
Sinkronisasi terakhir: 2026-06-20 16:58:01
API Documentation
Complete REST API Reference for Axum Desktop ↔ PHP Server
http://{HOST}/api.php?action={ACTION}
Semua request menggunakan format JSON. Response selalu berupa {"status": "success/error", "message": "...", ...}
Dashboard API
Get Dashboard Statistics
Ambil semua statistik dashboard: jumlah karyawan, log absensi, absensi hari ini, dan 10 log terakhir.
/api.php?action=dashboard_stats
{
"status": "success",
"message": "Success",
"data": {
"total_employees": 25,
"total_attendance_logs": 1500,
"today_attendance": 18,
"today_checkin": 12,
"today_checkout": 6,
"total_dealers": 3,
"recent_logs": [...]
}
}
Karyawan (Employee) API
List Employees
Daftar semua karyawan dengan pagination, pencarian, dan filter dealer.
/api.php?action=employees
| Parameter | Type | Default | Keterangan |
|---|---|---|---|
page | int | 1 | Halaman |
limit | int | 50 | Jumlah per halaman (max 100) |
search | string | - | Cari berdasarkan nama/NIP/employee_no |
dealer_code | string | - | Filter dealer |
sort_by | string | created_at | Kolom sorting |
sort_order | string | DESC | ASC / DESC |
// Response
{
"status": "success",
"data": [
{
"id": "emp_001",
"employee_no": "1001",
"name": "Budi Santoso",
"nip": "12345678",
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor Jakarta",
"created_at": "2024-05-20 08:00:00",
"updated_at": "2024-05-20 08:00:00"
}
],
"pagination": {
"total": 25,
"page": 1,
"limit": 50,
"total_pages": 1
}
}
Create / Update Employee
Simpan atau update data karyawan. Jika employee_no + dealer_code sudah ada, data akan di-update.
/api.php?action=employees
// Request Body
{
"employee_no": "1001", // required
"name": "Budi Santoso", // required
"nip": "12345678", // optional
"dealer_code": "DLR-001", // optional
"dealer_name": "Alfa Motor" // optional
}
Get Employee Detail
Lihat detail karyawan beserta ringkasan absensinya.
/api.php?action=employee_detail&employee_no=1001&dealer_code=DLR-001
// Response
{
"status": "success",
"data": { "id": "...", "employee_no": "1001", "name": "Budi", ... },
"attendance_summary": {
"total_logs": 45,
"first_attendance": "2024-01-15 07:55:00",
"last_attendance": "2024-06-14 17:02:00"
}
}
Delete Employee
Hapus karyawan berdasarkan employee_no.
/api.php?action=employee_delete
{
"employee_no": "1001",
"dealer_code": "DLR-001" // optional, filter by dealer
}
Absensi (Attendance) API
List Attendance Logs
Daftar semua log absensi dengan filter tanggal, karyawan, dealer, dan status.
/api.php?action=attendance_logs
| Parameter | Type | Keterangan |
|---|---|---|
page | int | Halaman (default: 1) |
limit | int | Jumlah per halaman (default: 50, max: 100) |
date | string | Filter tanggal (YYYY-MM-DD) |
employee_no | string | Filter berdasarkan no karyawan |
dealer_code | string | Filter dealer |
status | string | Filter status (Check In / Check Out) |
// Response
{
"status": "success",
"data": [
{
"id": "att_001",
"employee_no": "1001",
"employee_name": "Budi Santoso",
"nip": "12345678",
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor Jakarta",
"timestamp": "2024-05-20 08:00:00",
"status": "Check In",
"device_id": "DS-K1T804"
}
],
"pagination": { "total": 100, "page": 1, "limit": 50, "total_pages": 2 }
}
Create Single Attendance Log
Simpan satu log absensi.
/api.php?action=attendance
{
"employee_no": "1001", // required
"timestamp": "2024-05-20 08:00:00", // required
"status": "Check In", // required
"device_id": "DS-K1T804" // optional
}
Delete Attendance Log
/api.php?action=attendance_delete
{ "id": "att_abc123" }
Laporan Absensi API
Laporan Harian (Grouped by Employee + Date)
Laporan absensi per karyawan per hari. Scan pertama = Check In, scan terakhir = Check Out. Termasuk kalkulasi durasi kerja.
/api.php?action=laporan_absensi&month=2024-06
| Parameter | Type | Keterangan |
|---|---|---|
month | string | Bulan (YYYY-MM), default: bulan ini |
dealer_code | string | Filter dealer |
employee_no | string | Filter karyawan tertentu |
// Response
{
"status": "success",
"data": [
{
"employee_no": "1001",
"employee_name": "Budi Santoso",
"nip": "12345678",
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor Jakarta",
"tanggal": "2024-06-14",
"check_in": "07:55:00",
"check_out": "17:02:00",
"total_scans": 2,
"durasi_kerja": "9j 7m",
"durasi_menit": 547
}
],
"summary": {
"total_records": 350,
"total_checkin": 340,
"total_checkout": 320,
"month": "2024-06",
"dealer_code": ""
}
}
Ringkasan Bulanan per Karyawan
Total hari hadir, total scan, dan rentang tanggal kehadiran per karyawan per bulan.
/api.php?action=laporan_summary_bulanan&month=2024-06
// Response
{
"status": "success",
"data": [
{
"employee_no": "1001",
"employee_name": "Budi Santoso",
"nip": "12345678",
"dealer_code": "DLR-001",
"total_hari_hadir": 22,
"total_scans": 44,
"first_scan": "2024-06-01 07:55:00",
"last_scan": "2024-06-28 17:10:00"
}
]
}
Dealer API
List All Dealers
Daftar semua dealer beserta jumlah karyawan dan log absensi.
/api.php?action=dealers
[
{
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor JKT",
"employee_count": 15,
"attendance_count": 850
}
]
Dealer Detail
Detail dealer termasuk daftar karyawan dan info sinkronisasi.
/api.php?action=dealer_detail&dealer_code=DLR-001
{
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor",
"employee_count": 15,
"attendance_count": 850,
"last_sync": "2024-06-14",
"employees": [...]
}
Sync API (Axum Desktop → Server)
⭐ Primary🔄 Sync All (Rekomendasi Utama)
Endpoint utama yang digunakan oleh Axum desktop app. Mengirim semua karyawan dan log absensi baru sekaligus dalam satu request per dealer.
/api.php?action=sync_all
// Request Body (dari Axum SyncService)
{
"kode_dealer": "DLR-001",
"nama_dealer": "Alfa Motor Jakarta",
"employees": [
{
"employee_no": "1001",
"name": "Budi Santoso",
"nip": "12345678",
"created_at": "2024-01-15 10:00:00"
}
],
"attendance_logs": [
{
"employee_no": "1001",
"timestamp": "2024-05-20 08:00:00",
"status": "Check In",
"device_id": "DS-K1T804"
}
]
}
// Response
{
"status": "success",
"message": "Bulk data synced successfully",
"synced": {
"employees": 15,
"attendance_logs": 48
}
}
Get Last Sync Time
Axum menggunakan ini untuk incremental sync — hanya mengirim data setelah timestamp terakhir.
/api.php?action=get_last_sync_time
// Request
{ "kode_dealer": "DLR-001" }
// Response
{
"status": "success",
"last_sync_time": "2024-06-14 17:02:00" // or null
}
Bulk Operations API
Bulk Insert Employees
Bulk insert banyak karyawan dalam satu request.
/api.php?action=bulk_employees
{
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor",
"employees": [
{ "employee_no": "1001", "name": "Budi", "nip": "123" },
{ "employee_no": "1002", "name": "Ayu", "nip": "456" }
]
}
Bulk Insert Attendance
Bulk insert banyak log absensi dalam satu request.
/api.php?action=bulk_attendance
{
"dealer_code": "DLR-001",
"dealer_name": "Alfa Motor",
"attendance_logs": [
{ "employee_no": "1001", "timestamp": "2024-06-14 08:00:00", "status": "Check In" },
{ "employee_no": "1001", "timestamp": "2024-06-14 17:00:00", "status": "Check Out" }
]
}
⚠️ Purge Old Attendance Data
Hapus log absensi yang lebih lama dari tanggal tertentu. Hati-hati: operasi ini tidak dapat dibatalkan!
/api.php?action=purge_attendance
{
"before_date": "2024-01-01", // required (YYYY-MM-DD)
"dealer_code": "DLR-001" // optional, limit to specific dealer
}
// Response
{ "status": "success", "message": "Purged 150 records before 2024-01-01", "deleted": 150 }
Health & Server Info API
Health Check
Cek status server dan koneksi database. Ideal untuk monitoring & ping.
/api.php?action=health
{
"server": "running",
"database": "connected",
"timezone": "Asia/Jakarta",
"server_time": "2024-06-14 15:30:00",
"php_version": "8.2.5"
}
Server Info
Informasi lengkap server: statistik data, waktu sinkronisasi terakhir, dll.
/api.php?action=server_info
{
"server_time": "2024-06-14 15:30:00",
"total_employees": 25,
"total_attendance_logs": 1500,
"total_dealers": 3,
"first_record": "2024-01-15",
"last_sync": "2024-06-14 17:02:00"
}
Integrasi Rust / Axum
Berikut alur sinkronisasi yang digunakan oleh aplikasi desktop Axum (SyncService::run_full_sync):
get_last_sync_timesync_all (chunked 1000)let client = reqwest::Client::new();
// Step 1: Get last sync time
let resp = client.post("http://server/api.php?action=get_last_sync_time")
.json(&json!({ "kode_dealer": "DLR-001" }))
.send().await?;
// Step 2: Push data
let payload = json!({
"kode_dealer": "DLR-001",
"nama_dealer": "Alfa Motor Jakarta",
"employees": employees_vec,
"attendance_logs": new_logs_vec // filtered by last_sync_time
});
let resp = client.post("http://server/api.php?action=sync_all")
.json(&payload)
.send().await?;
📋 Ringkasan Semua Endpoint
| Halaman | Method | Action | Keterangan |
|---|---|---|---|
| Dashboard | GET | dashboard_stats |
Statistik ringkasan |
| Karyawan | GET | employees |
List + search + pagination |
| POST | employees |
Tambah/update karyawan | |
| GET | employee_detail |
Detail + ringkasan absensi | |
| POST | employee_delete |
Hapus karyawan | |
| Absensi | GET | attendance_logs |
List + filter + pagination |
| POST | attendance |
Simpan satu log absensi | |
| POST | attendance_delete |
Hapus log absensi | |
| Laporan | GET | laporan_absensi |
Laporan harian + durasi kerja |
| GET | laporan_summary_bulanan |
Ringkasan bulanan per karyawan | |
| Dealer | GET | dealers |
Daftar dealer |
| GET | dealer_detail |
Detail dealer + list karyawan | |
| Sync | POST | sync_all |
⭐ Sync utama dari Axum |
| POST | get_last_sync_time |
Timestamp sync terakhir | |
| Bulk | POST | bulk_employees |
Bulk insert karyawan |
| POST | bulk_attendance |
Bulk insert absensi | |
| POST | purge_attendance |
Hapus data lama | |
| Health | GET | health |
Status server & database |
| GET | server_info |
Info lengkap server |