{
    "info": {
        "name": "UGHRIS API",
        "description": "# UGHRIS Backend API\n\nREST API buat UGHRIS — backend HRIS Laravel yang dipake bareng oleh app web admin/self-service `ugfrontend` dan app mobile Flutter `ugapps`.\n\n## Base URL\n\nSemua request pake prefix `{{base_url}}`, defaultnya `http://localhost:8000/api/v1` di file environment yang udah disediain. Ganti variable `base_url` (di collection atau environment) kalo mau diarahin ke staging/production.\n\n## Login / Auth\n\n1. Jalanin **Autentikasi → Login** pake username/email/nomor HP + password yang valid.\n2. Test script-nya otomatis nyimpen token yang dibalikin ke variable collection `{{token}}`.\n3. Semua request laen di collection ini otomatis kepake Bearer auth dari level collection (`Authorization: Bearer {{token}}`) — gak perlu diatur lagi manual.\n\nAda beberapa endpoint yang emang publik (cek kesehatan, versi app, link aktivasi undangan/reset password) — itu ditandai eksplisit \"No Auth\" di request-nya masing-masing dan tetep jalan meskipun tanpa token.\n\n## Bentuk response\n\nSemua endpoint balikin bentuk JSON yang sama:\n\n- **Sukses**: `{\"success\": true, \"message\": \"...\", \"data\": ...}`\n- **List berpaginasi**: `data` isinya `{...field tambahan, \"items\": [...], \"pagination\": {\"current_page\", \"last_page\", \"per_page\", \"total\"}}`\n- **Error**: `{\"success\": false, \"message\": \"...\", \"errors\": ...}` dengan HTTP status yang sesuai — `422` validasi, `401` belum login, `403` gak punya akses (role/scope cabang), `404` gak ketemu, `429` kena rate-limit.\n\n## Scope per cabang\n\nKebanyakan endpoint list/detail buat admin nerima query param opsional `branch_id`. Buat role Head Office (`admin`, `hrd` — `can_access_all_branches: true`) ini mempersempit hasilnya ke satu cabang, atau dikosongin aja buat lihat semua cabang. Buat role yang scope-nya cuma satu cabang (`hrd_cabang`, `cabang`), param ini diabaikan — mereka selalu dipaksa ke cabangnya sendiri apapun yang dikirim.\n\n## Upload file\n\nEndpoint yang nerima file pake `multipart/form-data` (muncul sebagai tipe body \"form-data\" di Postman) — pilih file-nya beneran di field `file`/`selfie`/`attachment`/`proof`/`document` sebelum kirim.\n\n## Chat realtime\n\nFolder Chat cuma nyakup sisi REST-nya aja. Pengiriman pesan realtime itu koneksi WebSocket terpisah (Laravel Reverb, protokol Pusher) ke private channel `chat.room.{roomId}`, diotorisasi lewat `/broadcasting/auth` pake bearer token yang sama — gak bisa direproduksi sebagai request Postman biasa.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{token}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "base_url",
            "value": "http://localhost:8000/api/v1",
            "type": "string"
        },
        {
            "key": "token",
            "value": "",
            "type": "string"
        }
    ],
    "item": [
        {
            "name": "Status & Info Aplikasi",
            "description": "Endpoint cek status — gak perlu login. Berguna buat mastiin API-nya nyala dulu sebelum nyoba yang laen.",
            "item": [
                {
                    "name": "Cek Kesehatan Sistem",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/health",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "health"
                            ]
                        },
                        "description": "Ngejalanin pengecekan infrastruktur (DB, cache, storage, dll — liat HealthService) dan balikin `status: ok|degraded` beserta rincian tiap pengecekan. HTTP 200 kalau sehat, 503 kalau ada yang bermasalah. Response-nya gak pake amplop `{success,message,data}` kayak endpoint laen.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Versi Aplikasi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/app-version",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "app-version"
                            ]
                        },
                        "description": "Balikin info versi aplikasi mobile terbaru (dari config/mobile_app.php) — dipake app Flutter buat mutusin perlu munculin popup update atau nggak.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Autentikasi",
            "description": "Login sekali di sini — test script di request **Login** otomatis nyimpen token yang dibalikin ke variable collection `{{token}}`, terus dipake sama semua request di folder laen sebagai Bearer auth. Login ulang cuma perlu kalo token-nya expired atau mau ganti akun.",
            "item": [
                {
                    "name": "Login",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/auth/login",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "login"
                            ]
                        },
                        "description": "Login pake username, email, atau (khusus akun yang kelink ke karyawan) nomor HP — dicoba berurutan, plus normalisasi awalan 0/62 buat nomor HP. Ada throttle (`throttle:login`). Kalo berhasil, balikin `token` bearer, profil `user` (role, link ke karyawan, scope cabang), dan `menus` lengkap punya si pemanggil. Test script di request ini otomatis nyimpen `data.token` ke `{{token}}`.",
                        "auth": {
                            "type": "noauth"
                        },
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"login\": \"admin\",\n    \"password\": \"admin123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [],
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "const json = pm.response.json();",
                                    "if (json && json.data && json.data.token) {",
                                    "    pm.collectionVariables.set('token', json.data.token);",
                                    "    console.log('Token saved to {{token}}');",
                                    "}"
                                ]
                            }
                        }
                    ]
                },
                {
                    "name": "Logout",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/auth/logout",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "logout"
                            ]
                        },
                        "description": "Nge-invalidate token bearer yang lagi dipake, di sisi server. Abis ini, token yang sama bakal dapet 401 di request manapun."
                    },
                    "response": []
                },
                {
                    "name": "Profil Saya (Me)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/auth/me",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "me"
                            ]
                        },
                        "description": "Balikin profil punya user yang lagi login — bentuknya sama kayak object `user` di response Login. Berguna buat mastiin `{{token}}` sekarang punya akun siapa."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Undangan Akun & Reset Password",
            "description": "Alur aktivasi akun yang publik, berbasis token (token di URL ITU SENDIRI adalah kredensialnya — gak pake bearer auth), plus aksi admin (yang butuh login) buat bikin token/link-nya duluan.",
            "item": [
                {
                    "name": "Cek Status Undangan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/invite",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "invite"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Buat tampilan admin: ngecek apakah karyawan ini udah punya undangan yang pending/expired, biar tombol \"Undang\" bisa nampilin state yang bener."
                    },
                    "response": []
                },
                {
                    "name": "Buat Undangan Karyawan",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/invite",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "invite"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/HRD. Generate token aktivasi sekali-pakai + kode 4 digit buat karyawan ini (dipake buat bikin akun login pertamanya) — link-nya tetep dikirim manual sama admin (misalnya lewat WhatsApp)."
                    },
                    "response": []
                },
                {
                    "name": "Batalkan Undangan Karyawan",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/invite",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "invite"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/HRD. Nge-cancel undangan yang masih pending sebelum dipake."
                    },
                    "response": []
                },
                {
                    "name": "Lihat Undangan (Publik)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/invites/:token",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "invites",
                                ":token"
                            ],
                            "variable": [
                                {
                                    "key": "token",
                                    "value": "",
                                    "description": "Token undangan dari URL"
                                }
                            ]
                        },
                        "description": "Publik — gak pake bearer token, token di URL-nya sendiri jadi kredensial. Balikin info dasar (nama karyawan, dll) biar halaman aktivasi bisa nyapa usernya sebelum dia submit kode 4 digit + password baru.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Aktivasi Undangan (Publik)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/invites/:token/activate",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "invites",
                                ":token",
                                "activate"
                            ],
                            "variable": [
                                {
                                    "key": "token",
                                    "value": "",
                                    "description": "Token undangan dari URL"
                                }
                            ]
                        },
                        "description": "Publik, throttle 10/menit, ditambah lockout percobaan dari service-nya sendiri. Submit kode 4 digit + password baru buat bikin akun login pertama si karyawan.",
                        "auth": {
                            "type": "noauth"
                        },
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"1234\",\n    \"password\": \"newpassword123\",\n    \"password_confirmation\": \"newpassword123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Buat Link Reset Password",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/password-reset-link",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "password-reset-link"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Akun Pengguna"
                                }
                            ]
                        },
                        "description": "Khusus admin/HRD, dari halaman \"Pengguna & Akses Menu\". Generate token reset + kode 4 digit buat satu akun pengguna — admin tetep harus klik \"Buka WhatsApp\" buat ngirim beneran."
                    },
                    "response": []
                },
                {
                    "name": "Lihat Reset Password (Publik)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/password-resets/:token",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "password-resets",
                                ":token"
                            ],
                            "variable": [
                                {
                                    "key": "token",
                                    "value": "",
                                    "description": "Token reset dari URL"
                                }
                            ]
                        },
                        "description": "Publik — gak pake bearer token, token di URL-nya sendiri jadi kredensial.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Aktivasi Reset Password (Publik)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/password-resets/:token/activate",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "password-resets",
                                ":token",
                                "activate"
                            ],
                            "variable": [
                                {
                                    "key": "token",
                                    "value": "",
                                    "description": "Token reset dari URL"
                                }
                            ]
                        },
                        "description": "Publik, throttle 10/menit, ditambah lockout percobaan dari service-nya sendiri. Submit kode 4 digit + password baru.",
                        "auth": {
                            "type": "noauth"
                        },
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"1234\",\n    \"password\": \"newpassword123\",\n    \"password_confirmation\": \"newpassword123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Data Master",
            "description": "CRUD generik yang diatur sepenuhnya dari `config/master_resources.php` — jadi satu pola konsisten aja, gak perlu bikin controller sendiri-sendiri buat tiap tabel lookup. Ganti `:resource` dengan salah satu dari: **cities, branch_types, employee_statuses, kpi_categories, banks, departments, positions, shifts, leave_types, holidays, payroll_tax_brackets, kpi_indicators, recruitment_stages, companies, branches, employees, job_postings**. Daftar field asli tiap resource (nama/tipe/aturan validasi) dibalikin secara dinamis di `data.fields` pas List — frontend-nya sendiri juga gak hardcode field-nya, jadi cek dulu response itu buat tau body create/update-nya butuh apa aja. Resource `employees` otomatis ke-scope per cabang buat akun non-HO, dan field sensitif (gaji, NPWP, BPJS, rekening bank) disembunyiin dari response buat role di luar `sensitive_fields_roles`.",
            "item": [
                {
                    "name": "Daftar Resource yang Tersedia",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/master",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "master"
                            ]
                        },
                        "description": "Balikin semua slug + label resource yang terdaftar (kecuali yang ditandai `hidden_from_settings`) — biar frontend bisa bikin menu setting tanpa hardcode daftarnya."
                    },
                    "response": []
                },
                {
                    "name": "Lihat Data Resource",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/master/:resource?search=&per_page=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "master",
                                ":resource"
                            ],
                            "query": [
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas (teks)",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman (default sesuai TableQuery)",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "khusus resource employees — filter/paksa ke satu cabang",
                                    "disabled": true
                                }
                            ],
                            "variable": [
                                {
                                    "key": "resource",
                                    "value": "",
                                    "description": "contoh: departments — lihat deskripsi folder buat daftar lengkapnya"
                                }
                            ]
                        },
                        "description": "List berpaginasi buat satu resource, plus pencarian. Response-nya juga isi `label` dan metadata `fields` yang jelasin skema resource itu buat render form secara dinamis."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Data Resource",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/master/:resource",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "master",
                                ":resource"
                            ],
                            "variable": [
                                {
                                    "key": "resource",
                                    "value": "",
                                    "description": "contoh: departments"
                                }
                            ]
                        },
                        "description": "Divalidasi sesuai aturan field resource itu sendiri (liat metadata `fields` dari endpoint List). Butuh hak kelola buat resource tersebut — bikin `employees` baru dikunci per cabang buat akun non-HO.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"DEPT-01\",\n    \"name\": \"Contoh\",\n    \"is_active\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ubah Data Resource",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/master/:resource/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "master",
                                ":resource",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "resource",
                                    "value": "",
                                    "description": "contoh: departments"
                                },
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Baris"
                                }
                            ]
                        },
                        "description": "Validasinya sama kayak Create. Update `employees` dicek scope cabangnya (gak bisa edit karyawan di luar cabang sendiri).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"DEPT-01\",\n    \"name\": \"Contoh Updated\",\n    \"is_active\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Data Resource",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/master/:resource/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "master",
                                ":resource",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "resource",
                                    "value": "",
                                    "description": "contoh: departments"
                                },
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Baris"
                                }
                            ]
                        },
                        "description": "Pengecekan scope cabang sama kayak update, khusus `employees`."
                    },
                    "response": []
                },
                {
                    "name": "Generate Hari Libur Nasional",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/holidays/generate",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "holidays",
                                "generate"
                            ]
                        },
                        "description": "Khusus admin/hrd. Otomatis ngisi hari libur nasional buat satu tahun tertentu (beda sama CRUD manual `/master/holidays` di atas, yang emang buat tambah/edit/hapus manual).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"year\": 2027\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Data Karyawan",
            "description": "Sub-resource di halaman detail karyawan: detail profil, upload dokumen, dan riwayat karir/gaji — semuanya nested di bawah `/employees/{id}`.",
            "item": [
                {
                    "name": "Detail Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/detail",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "detail"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Dipake buat halaman Detail Karyawan (admin) sekaligus halaman Profil self-service (route sama). Lihat data sendiri (employee_id sendiri) selalu boleh; lihat data orang lain butuh admin/hrd/hrd_cabang + scope cabang yang sesuai."
                    },
                    "response": []
                },
                {
                    "name": "Upload Dokumen Karyawan",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/documents",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "documents"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Upload dokumen berkategori (KTP, ijazah, dll) ke arsip file karyawan ini.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "category",
                                    "type": "text",
                                    "value": "KTP"
                                },
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Dokumen Karyawan",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/documents/:documentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "documents",
                                ":documentId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                },
                                {
                                    "key": "documentId",
                                    "value": "",
                                    "description": "ID Baris Dokumen"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Riwayat Rekrutmen Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/recruitment",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "recruitment"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Read-only: data pipeline rekrutmen (skor/penilaian/kontrak/onboarding) yang jadi asal karyawan ini direkrut, kalo ada. Balikin data null (bukan 404) kalo karyawannya gak direkrut lewat modul rekrutmen."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Riwayat Karir/Gaji",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/career-events",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "career-events"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang. Satu modal, dua perilaku: `type` [Bergabung, Promosi, Mutasi, Demosi] juga mindahin karyawan ke posisi/departemen/cabang baru (butuh `position_id`, `started_at`); `type` [Kenaikan Berkala, Penyesuaian] cuma ngubah gaji (butuh `effective_date`). Dua-duanya selalu nambahin baris `base_salary`/`meal_allowance`/`transport_allowance` baru. Ditolak kalo tanggalnya lebih awal dari event terakhir yang udah tercatat — pake endpoint update di bawah buat koreksi tanggal mundur.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"type\": \"Kenaikan Berkala\",\n    \"effective_date\": \"2027-01-01\",\n    \"base_salary\": 5000000,\n    \"meal_allowance\": 500000,\n    \"transport_allowance\": 300000,\n    \"note\": \"Kenaikan berkala tahunan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ubah Riwayat Gaji",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/salary-history/:historyId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "salary-history",
                                ":historyId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                },
                                {
                                    "key": "historyId",
                                    "value": "",
                                    "description": "ID baris salary_history"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang. Buat koreksi baris salary_history yang udah ada (bukan alur \"tambah event baru\" di atas).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"effective_date\": \"2027-01-01\",\n    \"base_salary\": 5000000,\n    \"meal_allowance\": 500000,\n    \"transport_allowance\": 300000,\n    \"reason\": \"Koreksi data\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Riwayat Gaji",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/salary-history/:historyId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "salary-history",
                                ":historyId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                },
                                {
                                    "key": "historyId",
                                    "value": "",
                                    "description": "ID baris salary_history"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Riwayat Karir",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/career-history/:historyId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "career-history",
                                ":historyId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                },
                                {
                                    "key": "historyId",
                                    "value": "",
                                    "description": "ID baris career_history"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang. Buat koreksi baris career_history yang udah ada (perpindahan posisi/departemen/cabang).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"type\": \"Promosi\",\n    \"position_id\": 3,\n    \"department_id\": 1,\n    \"branch_id\": 1,\n    \"started_at\": \"2027-01-01\",\n    \"ended_at\": null,\n    \"note\": \"Koreksi data\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Riwayat Karir",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/career-history/:historyId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "career-history",
                                ":historyId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                },
                                {
                                    "key": "historyId",
                                    "value": "",
                                    "description": "ID baris career_history"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Rekam Jejak Kedisiplinan",
            "description": "Catatan pelanggaran, sanksi, dan ambang batas deteksi mangkir/telat. Buat tampilan admin (muncul di halaman Detail Karyawan + banner alert halaman Absensi), kecuali `mine` yang self-service.",
            "item": [
                {
                    "name": "Ringkasan Kedisiplinan Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/discipline/summary?month=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "discipline",
                                "summary"
                            ],
                            "query": [
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM, default bulan sekarang",
                                    "disabled": true
                                }
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Ringkasan pelanggaran/sanksi per karyawan buat satu bulan tertentu (default bulan sekarang)."
                    },
                    "response": []
                },
                {
                    "name": "Rekam Kedisiplinan Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/discipline/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "discipline",
                                "mine"
                            ]
                        },
                        "description": "Self-service — selalu catatan milik si pemanggil sendiri. Dipake buat detail tab Notifikasi di ugfrontend self-service maupun ugapps."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Pelanggaran (Semua Cabang)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/violations?branch_id=&level=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "violations"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO — persempit ke satu cabang",
                                    "disabled": true
                                },
                                {
                                    "key": "level",
                                    "value": "",
                                    "description": "Ringan|Sedang|Berat",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter berdasarkan status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas (teks)",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Halaman admin \"Pelanggaran & Sanksi\" — semua pelanggaran semua karyawan sekaligus, bisa difilter."
                    },
                    "response": []
                },
                {
                    "name": "Alert Kedisiplinan (Semua Cabang)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/discipline/alerts?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "discipline",
                                "alerts"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO — persempit ke satu cabang",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Scan mangkir-beruntun / sering-telat buat banner alert di halaman Absensi."
                    },
                    "response": []
                },
                {
                    "name": "Jumlah Pelanggaran Aktif (Bulk)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/discipline/active-counts?employee_ids=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "discipline",
                                "active-counts"
                            ],
                            "query": [
                                {
                                    "key": "employee_ids",
                                    "value": "",
                                    "description": "ID karyawan dipisah koma, misal 1,2,3",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang. Jumlah pelanggaran aktif secara massal buat badge di list Karyawan — satu request buat banyak employee ID sekaligus, daripada query satu-satu per baris."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Pelanggaran Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/violations",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "violations"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Catat Pelanggaran",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/violations",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "violations"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Bikin baris pelanggarannya dulu; file bukti dilampirkan belakangan lewat endpoint Attachments di bawah (form admin nyimpen file sementara dulu sebelum save ini, terus upload satu-satu abis itu).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"date\": \"2027-01-15\",\n    \"type\": \"Terlambat\",\n    \"level\": \"Ringan\",\n    \"sanction\": \"Teguran Lisan\",\n    \"document_number\": null,\n    \"description\": \"Terlambat 30 menit tanpa keterangan.\",\n    \"financial_loss\": null,\n    \"valid_until\": null,\n    \"recorded_by\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Tandai Pelanggaran Selesai",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/violations/:id/selesai",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "violations",
                                ":id",
                                "selesai"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pelanggaran"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang (dicek terhadap karyawan pemilik pelanggaran itu)."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Lampiran Pelanggaran",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/violations/:id/attachments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "violations",
                                ":id",
                                "attachments"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pelanggaran"
                                }
                            ]
                        },
                        "description": "File bukti pelanggaran buat satu baris pelanggaran."
                    },
                    "response": []
                },
                {
                    "name": "Upload Lampiran Pelanggaran",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/violations/:id/attachments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "violations",
                                ":id",
                                "attachments"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pelanggaran"
                                }
                            ]
                        },
                        "description": "Upload satu file bukti pelanggaran.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Lampiran Pelanggaran",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/violations/:id/attachments/:attachmentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "violations",
                                ":id",
                                "attachments",
                                ":attachmentId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pelanggaran"
                                },
                                {
                                    "key": "attachmentId",
                                    "value": "",
                                    "description": "ID Baris Lampiran"
                                }
                            ]
                        },
                        "description": "Hapus satu file bukti pelanggaran."
                    },
                    "response": []
                },
                {
                    "name": "Pola Shift Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/shift-pattern",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "shift-pattern"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Pola hari libur mingguan berulang karyawan ini (misal \"libur tiap Sab+Min\") — tier kedua dalam rantai resolusi jadwal kerja (roster > pola shift > default)."
                    },
                    "response": []
                },
                {
                    "name": "Atur Pola Shift Karyawan",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/shift-pattern",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "shift-pattern"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Mengganti seluruh minggu (0=Minggu..6=Sabtu); `shift_id: null` di satu hari artinya libur eksplisit di hari itu.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"days\": [\n        {\n            \"day_of_week\": 0,\n            \"shift_id\": null\n        },\n        {\n            \"day_of_week\": 6,\n            \"shift_id\": null\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Hari di Pola Shift",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/shift-pattern",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "shift-pattern"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Ngapus konfigurasi hari-hari tertentu sepenuhnya (balik ke tier resolusi berikutnya) — beda sama set `shift_id: null` yang artinya libur eksplisit.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"days\": [\n        0,\n        6\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ambang Batas Kedisiplinan (Setting)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/discipline/settings",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "discipline",
                                "settings"
                            ]
                        },
                        "description": "admin/hrd/hrd_cabang bisa LIHAT — ambang batas mangkir/telat yang nentuin kapan surat peringatan (SP) atau dasar PHK berlaku."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Ambang Batas Kedisiplinan",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/discipline/settings",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "discipline",
                                "settings"
                            ]
                        },
                        "description": "Khusus admin/hrd SAJA (hrd_cabang gak boleh) — ambang batas ini jadi dasar hukum buat PHK di seluruh perusahaan, jadi role yang scope-nya cuma satu cabang gak boleh ngubah-ngubah ini.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"mangkir_min\": 3,\n    \"mangkir_sp\": 5,\n    \"mangkir_phk\": 7,\n    \"mangkir_legal_basis_text\": null,\n    \"telat_min\": 5,\n    \"telat_sp\": 10,\n    \"telat_kritis\": 15,\n    \"telat_menit_berat\": 60\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Dinas & Penugasan Khusus",
            "description": "Data perjalanan dinas / penugasan khusus. CRUD admin buat semua cabang, plus subset self-service `mine/active/*` buat karyawan yang lagi dinas (checklist tugas, catatan hasil, foto dokumentasi).",
            "item": [
                {
                    "name": "Daftar Dinas (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments?branch_id=&destination_branch_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "destination_branch_id",
                                    "value": "",
                                    "description": "Filter berdasarkan cabang tujuan",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Direncanakan|Berlangsung|Selesai|Dibatalkan",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Buat Dinas",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments"
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang ke cabang si karyawan sendiri.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"division\": \"Operasional\",\n    \"destination_branch_id\": 2,\n    \"start_date\": \"2027-02-01\",\n    \"end_date\": \"2027-02-05\",\n    \"status\": \"Direncanakan\",\n    \"agenda\": \"Audit cabang\",\n    \"goals\": \"Cek kepatuhan SOP\",\n    \"result_notes\": null,\n    \"tasks\": [\n        {\n            \"description\": \"Cek kas kecil\",\n            \"is_done\": false\n        }\n    ],\n    \"actions\": [\n        {\n            \"description\": \"Serahkan laporan ke atasan\",\n            \"is_done\": false\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Dinas Aktif Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/mine/active",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                "mine",
                                "active"
                            ]
                        },
                        "description": "Self-service. Dinas yang lagi aktif hari ini punya si pemanggil, kalo ada (dipake buat layar checklist \"Dinas Aktif\" di self-service)."
                    },
                    "response": []
                },
                {
                    "name": "Centang/Batal Centang Tugas Saya",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/mine/active/tasks/:taskId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                "mine",
                                "active",
                                "tasks",
                                ":taskId"
                            ],
                            "variable": [
                                {
                                    "key": "taskId",
                                    "value": "",
                                    "description": "ID Baris Tugas"
                                }
                            ]
                        },
                        "description": "Self-service. Centang/batal centang satu tugas di dinas aktif si pemanggil.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"is_done\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Simpan Catatan Hasil Dinas Saya",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/mine/active/result",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                "mine",
                                "active",
                                "result"
                            ]
                        },
                        "description": "Self-service. Catatan bebas tentang apa yang terjadi selama perjalanan dinas.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"result_notes\": \"Audit selesai, tidak ada temuan signifikan.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Upload Dokumentasi Saya",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/mine/active/attachments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                "mine",
                                "active",
                                "attachments"
                            ]
                        },
                        "description": "Self-service. Cuma boleh selama absensi hari ini belom clock-out.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Dokumentasi Saya",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/mine/active/attachments/:attachmentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                "mine",
                                "active",
                                "attachments",
                                ":attachmentId"
                            ],
                            "variable": [
                                {
                                    "key": "attachmentId",
                                    "value": "",
                                    "description": "ID Baris Lampiran"
                                }
                            ]
                        },
                        "description": "Self-service. Batasan \"sebelum clock-out\" yang sama kayak upload."
                    },
                    "response": []
                },
                {
                    "name": "Detail Dinas",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Dinas",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang (dicek terhadap karyawan lama maupun karyawan baru yang disubmit).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"division\": \"Operasional\",\n    \"destination_branch_id\": 2,\n    \"start_date\": \"2027-02-01\",\n    \"end_date\": \"2027-02-05\",\n    \"status\": \"Berlangsung\",\n    \"agenda\": \"Audit cabang\",\n    \"goals\": \"Cek kepatuhan SOP\",\n    \"result_notes\": null,\n    \"tasks\": [],\n    \"actions\": []\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Dinas",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Lampiran Dinas (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id/attachments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id",
                                "attachments"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                }
                            ]
                        },
                        "description": "File \"Dokumentasi\" buat satu baris dinas, tampilan admin."
                    },
                    "response": []
                },
                {
                    "name": "Upload Lampiran Dinas (Admin)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id/attachments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id",
                                "attachments"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                }
                            ]
                        },
                        "description": "Upload satu file dokumentasi dinas dari sisi admin.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Lampiran Dinas (Admin)",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/assignments/:id/attachments/:attachmentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "assignments",
                                ":id",
                                "attachments",
                                ":attachmentId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dinas"
                                },
                                {
                                    "key": "attachmentId",
                                    "value": "",
                                    "description": "ID Baris Lampiran"
                                }
                            ]
                        },
                        "description": "Hapus satu file dokumentasi dinas dari sisi admin."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Penilaian KPI",
            "description": "Generate dan penilaian skor KPI — kpi_categories/kpi_indicators sendiri ada di Data Master; ini adalah record penilaiannya di atas itu.",
            "item": [
                {
                    "name": "Ringkasan KPI Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/kpi/summary",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "kpi",
                                "summary"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Kartu \"Kinerja KPI\" di halaman Detail Karyawan."
                    },
                    "response": []
                },
                {
                    "name": "Ringkasan Penilaian KPI",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/summary?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                "summary"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Statistik agregat buat satu periode/cabang."
                    },
                    "response": []
                },
                {
                    "name": "Preview Generate Penilaian",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/generate-preview?period=&branch_id=&department_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                "generate-preview"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "department_id",
                                    "value": "",
                                    "description": "Filter divisi",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Siapa aja yang masuk scope buat \"Generate Penilaian\" dan apakah mereka udah punya record buat periode tersebut."
                    },
                    "response": []
                },
                {
                    "name": "Generate Penilaian",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/generate",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                "generate"
                            ]
                        },
                        "description": "Bikin banyak baris penilaian berstatus Draft sekaligus buat karyawan/periode yang dipilih. Pemanggil non-HO cuma boleh pilih employee_ids yang ada di cabangnya sendiri (ditolak kalo akunnya gak punya cabang sama sekali).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-01\",\n    \"employee_ids\": [\n        1,\n        2,\n        3\n    ],\n    \"overwrite\": false\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Finalisasi Semua",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/finalize-all",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                "finalize-all"
                            ]
                        },
                        "description": "Finalisasi massal semua penilaian buat periode/cabang yang udah siap.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-01\",\n    \"branch_id\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Matriks Nilai KPI",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/matrix?period=&branch_id=&department_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                "matrix"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "department_id",
                                    "value": "",
                                    "description": "Filter divisi",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Matriks skor karyawan × indikator — tab \"Matriks Nilai\"."
                    },
                    "response": []
                },
                {
                    "name": "Detail Penilaian KPI",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Penilaian"
                                }
                            ]
                        },
                        "description": "Dicek scope cabangnya terhadap cabang si penilaian."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Penilaian KPI",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Penilaian"
                                }
                            ]
                        },
                        "description": "Simpan realisasi indikator + majuin status penilaian dari Draft → Self Assessment → Review Atasan → Final.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"items\": [\n        {\n            \"id\": 1,\n            \"realization\": 95\n        }\n    ],\n    \"status\": \"Review Atasan\",\n    \"self_note\": null,\n    \"atasan_note\": null,\n    \"reviewer_name\": null,\n    \"recommendation\": null,\n    \"assessed_at\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Daftar Penilaian KPI",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kpi-assessments?period=&branch_id=&department_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kpi-assessments"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "department_id",
                                    "value": "",
                                    "description": "Filter divisi",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua penilaian KPI, bisa difilter."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Laporan",
            "description": "4 halaman laporan read-only di atas data Penggajian/Bonus/KPI/Rekrutmen. Khusus admin/hrd/hrd_cabang.",
            "item": [
                {
                    "name": "Laporan Penggajian",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/reports/payroll?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "reports",
                                "payroll"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Laporan rekap penggajian per periode."
                    },
                    "response": []
                },
                {
                    "name": "Laporan Bonus",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/reports/bonus?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "reports",
                                "bonus"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Laporan rekap bonus per periode."
                    },
                    "response": []
                },
                {
                    "name": "Laporan Kinerja (KPI)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/reports/kinerja?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "reports",
                                "kinerja"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Laporan rekap kinerja KPI per periode."
                    },
                    "response": []
                },
                {
                    "name": "Laporan Rekrutmen",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/reports/rekrutmen?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "reports",
                                "rekrutmen"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Laporan rekap rekrutmen per periode."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Poin Karyawan",
            "description": "Program reward \"Poin Karyawan\". `mine` self-service; sisanya admin/hrd/hrd_cabang, scope cabang.",
            "item": [
                {
                    "name": "Poin Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "mine"
                            ]
                        },
                        "description": "Self-service — saldo sendiri + transaksi terbaru. Dipake buat kartu \"Poin Reward\" di halaman Profil."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Saldo Poin",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points?branch_id=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List saldo poin semua karyawan."
                    },
                    "response": []
                },
                {
                    "name": "Pengaturan Poin",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/settings",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "settings"
                            ]
                        },
                        "description": "Rate konversi rupiah-per-poin + jatah poin per hari hadir."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Pengaturan Poin",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/settings",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "settings"
                            ]
                        },
                        "description": "Ubah rate konversi dan jatah poin harian.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"rupiah_per_point\": 1000,\n    \"points_per_attendance_day\": 1\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Transaksi Poin Karyawan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/employees/:employeeId/transactions",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "employees",
                                ":employeeId",
                                "transactions"
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Beri Poin (Manual)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/give",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "give"
                            ]
                        },
                        "description": "Scope cabang. `points` boleh negatif buat ngurangin.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"points\": 10,\n    \"reason\": \"Reward kinerja bulan ini\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Proses Tunjangan Poin Bulanan",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/points/process-monthly",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "points",
                                "process-monthly"
                            ]
                        },
                        "description": "Kasih poin jatah-per-hari-hadir secara massal ke semua karyawan yang eligible buat satu periode.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-01\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Chat & Kolaborasi Internal",
            "description": "Chat pribadi 1-on-1, chat grup, channel HRD per cabang yang otomatis kebikin sendiri, dan fitur \"Buat Pengumuman\" HRD buat blast ke satu/beberapa divisi sekaligus. Pengiriman realtime lewat Laravel Reverb (WebSocket protokol Pusher) di private channel `chat.room.{roomId}` — collection ini cuma nyakup sisi REST-nya aja, bukan koneksi WebSocket-nya. Akun HO (admin/hrd, gak ada link ke data karyawan) dapet tampilan read-only buat semua channel cabang + pengumuman yang mereka buat sendiri, bukan list room berbasis keanggotaan kayak biasa.",
            "item": [
                {
                    "name": "Cari Karyawan (untuk Chat)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/employees/search?search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "employees",
                                "search"
                            ],
                            "query": [
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Nama atau NIK",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Lintas cabang, buat semua role yang login — sengaja gak dibatasi per cabang (beda sama list karyawan di Data Master), soalnya kita emang perlu bisa mulai chat sama orang di luar cabang sendiri."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Chat Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms?per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms"
                            ],
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Akun karyawan dapet list room berbasis keanggotaan sendiri (pribadi + grup + channel HRD cabangnya). Akun HO (gak punya employee_id) malah dapet semua channel HRD tiap cabang + semua pengumuman yang mereka buat sendiri, sifatnya read-only."
                    },
                    "response": []
                },
                {
                    "name": "Buat Chat Pribadi atau Grup",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms"
                            ]
                        },
                        "description": "`type: \"private\"` butuh `employee_id` (di-dedup — buka lagi chat sama orang yang sama bakal makai room yang udah ada, dijamin lewat pair key unik di DB). `type: \"group\"` butuh `name` + `member_ids`. Pemanggil wajib punya employee_id (HO gak bisa bikin room lewat cara ini — liat endpoint Pengumuman di bawah).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"type\": \"private\",\n    \"employee_id\": 2\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Buat Pengumuman (Blast Divisi)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/announcements",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "announcements"
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, ada throttle (`throttle:chat-message`). Bikin grup chat baru yang nargetin semua karyawan aktif di divisi yang dipilih, terus langsung kirim pesan pertamanya dalam satu kali panggilan. hrd_cabang di-scope ke cabangnya sendiri; HO (admin/hrd) jangkauannya seluruh perusahaan dan pengumumannya diatributkan ke akun user (bukan karyawan) karena mereka emang gak punya data karyawan.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"department_ids\": [\n        5\n    ],\n    \"message\": \"Pengumuman: libur nasional besok, kantor tutup.\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Room",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Khusus anggota room, kecuali HO yang boleh lihat channel cabang manapun atau room pengumuman miliknya sendiri. Balikin 404 (bukan 403) buat yang bukan anggota — biar keberadaan room-nya gak ketauan sama sekali."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Anggota Grup",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/members",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "members"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Khusus pemilik grup.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_ids\": [\n        3,\n        4\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Keluarkan Anggota dari Grup",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/members/:employeeId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "members",
                                ":employeeId"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                },
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan yang mau dikeluarkan"
                                }
                            ]
                        },
                        "description": "Khusus pemilik grup. Buat keluar sendiri, pake endpoint \"Keluar dari Room\" aja."
                    },
                    "response": []
                },
                {
                    "name": "Keluar dari Room",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/leave",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "leave"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Semua anggota boleh, tipe room apa aja."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Pesan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/messages?per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "messages"
                            ],
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Khusus anggota (+ pengecualian HO, sama kayak Detail Room). Urutan terbaru duluan, berpaginasi — client-nya yang bolak-balik urutannya buat tampilan kronologis."
                    },
                    "response": []
                },
                {
                    "name": "Kirim Pesan",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/messages",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "messages"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Khusus anggota, ada throttle (`throttle:chat-message`). `message` dan/atau satu file `attachment` — minimal salah satu wajib diisi. Ngirim broadcast realtime `MessageSent` ke channel `chat.room.{roomId}` secara langsung/sinkron.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "message",
                                    "type": "text",
                                    "value": "Halo tim!"
                                },
                                {
                                    "key": "attachment",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Pesan",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/messages/:messageId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "messages",
                                ":messageId"
                            ],
                            "variable": [
                                {
                                    "key": "messageId",
                                    "value": "",
                                    "description": "ID Pesan"
                                }
                            ]
                        },
                        "description": "Cuma pengirimnya sendiri (soft delete)."
                    },
                    "response": []
                },
                {
                    "name": "Tandai Room Sudah Dibaca",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/chat/rooms/:roomId/read",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "chat",
                                "rooms",
                                ":roomId",
                                "read"
                            ],
                            "variable": [
                                {
                                    "key": "roomId",
                                    "value": "",
                                    "description": "ID Room"
                                }
                            ]
                        },
                        "description": "Khusus anggota. Set last_read_at ke waktu sekarang, ngilangin badge unread buat room ini."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Penggajian",
            "description": "Tabel `payroll_runs` dipake buat dua hal sekaligus: \"Hitung Gaji\" (generate) dan \"Slip Gaji\" (hasilnya) — liat docblock PayrollRunService. Field input manual (lembur, tunjangan, persen bpjs, dll) itu opsional, jadi overlay di atas hasil hitungan otomatis.",
            "item": [
                {
                    "name": "Daftar Data Gaji",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs?period=&branch_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Scope cabang buat akun non-HO."
                    },
                    "response": []
                },
                {
                    "name": "Slip Gaji Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                "mine"
                            ]
                        },
                        "description": "Self-service — slip gaji milik si pemanggil sendiri."
                    },
                    "response": []
                },
                {
                    "name": "Rekap Transfer",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/transfer-recap?period=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                "transfer-recap"
                            ],
                            "query": [
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Rekap transfer bank buat satu periode — satu baris per gaji bersih tiap karyawan."
                    },
                    "response": []
                },
                {
                    "name": "Preview Hitung Gaji",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/preview",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                "preview"
                            ]
                        },
                        "description": "Ngitung doang tanpa disimpen — biar admin bisa liat rinciannya (dan atur overlay manual) dulu sebelum benar-benar disimpen lewat Create.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"period\": \"2027-01\",\n    \"lembur\": 0,\n    \"tunjangan_lain\": 0,\n    \"bonus_kinerja\": 0,\n    \"bonus_thr\": 0,\n    \"komisi\": 0,\n    \"insentif_lain\": 0,\n    \"potongan_lain\": 0,\n    \"bpjs_kesehatan_percent\": null,\n    \"bpjs_ketenagakerjaan_percent\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Generate Gaji Massal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/generate-bulk",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                "generate-bulk"
                            ]
                        },
                        "description": "Generate satu payroll_run buat setiap karyawan yang eligible dalam scope, sekaligus buat satu periode.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-01\",\n    \"branch_id\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Data Gaji",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Data Gaji"
                                }
                            ]
                        },
                        "description": "Dicek scope cabangnya."
                    },
                    "response": []
                },
                {
                    "name": "Tandai Sudah Dibayar",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/:id/mark-paid",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                ":id",
                                "mark-paid"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Data Gaji"
                                }
                            ]
                        },
                        "description": "Menandai satu data gaji sebagai sudah dibayar."
                    },
                    "response": []
                },
                {
                    "name": "Tandai Final",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/:id/mark-final",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                ":id",
                                "mark-final"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Data Gaji"
                                }
                            ]
                        },
                        "description": "Mengunci data gaji ini biar gak bisa dihitung ulang lagi."
                    },
                    "response": []
                },
                {
                    "name": "Tandai Terkirim via WA",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs/:id/mark-wa-sent",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs",
                                ":id",
                                "mark-wa-sent"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Data Gaji"
                                }
                            ]
                        },
                        "description": "Menandai kalo slip gajinya udah dikirim ke karyawan lewat WhatsApp (gak ada pengiriman beneran di sisi server)."
                    },
                    "response": []
                },
                {
                    "name": "Buat Data Gaji (Satuan)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/payroll-runs",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "payroll-runs"
                            ]
                        },
                        "description": "Input sama kayak Preview, tapi hasilnya beneran disimpen.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"period\": \"2027-01\",\n    \"lembur\": 0,\n    \"tunjangan_lain\": 0,\n    \"bonus_kinerja\": 0,\n    \"bonus_thr\": 0,\n    \"komisi\": 0,\n    \"insentif_lain\": 0,\n    \"potongan_lain\": 0,\n    \"bpjs_kesehatan_percent\": null,\n    \"bpjs_ketenagakerjaan_percent\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Kasbon",
            "description": "Alur dua gerbang: ApprovalEngine standar (Pending → Menunggu Transfer / Ditolak), terus ada langkah manual \"Konfirmasi Transfer\" yang mindahin statusnya ke Aktif.",
            "item": [
                {
                    "name": "Daftar Kasbon (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons?branch_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Kasbon Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons",
                                "mine"
                            ]
                        },
                        "description": "Self-service."
                    },
                    "response": []
                },
                {
                    "name": "Detail Kasbon",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kasbon"
                                }
                            ]
                        },
                        "description": "Pemilik kasbon selalu bisa liat punya sendiri; selain itu butuh hak kelola + scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Ajukan Kasbon",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons"
                            ]
                        },
                        "description": "Default-nya self-service. admin/hrd/hrd_cabang/cabang bisa kasih `employee_id` buat ngajuin atas nama orang lain yang masih dalam scope mereka. Langsung mulai alur ApprovalEngine begitu diajukan.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"requested_amount\": 2000000,\n    \"installment_amount\": 500000,\n    \"start_deduction_period\": \"2027-02\",\n    \"purpose\": \"Kebutuhan mendesak\",\n    \"employee_id\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Approve Kasbon",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons/:id/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons",
                                ":id",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kasbon"
                                }
                            ]
                        },
                        "description": "Lewat ApprovalEngine — pemanggilnya harus approver di step yang lagi pending."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Kasbon",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kasbon"
                                }
                            ]
                        },
                        "description": "Nolak pengajuan kasbon.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Belum memenuhi syarat\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Konfirmasi Transfer",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/kasbons/:id/confirm-transfer",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "kasbons",
                                ":id",
                                "confirm-transfer"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kasbon"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang. Gerbang kedua setelah approve — mindahin kasbon ke status Aktif begitu uangnya beneran udah ditransfer.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "reference",
                                    "type": "text",
                                    "value": "TRF-20270201-001"
                                },
                                {
                                    "key": "proof",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Lembur",
            "description": "ApprovalEngine (Pending → Disetujui/Ditolak), terus ada langkah manual \"Tandai Dibayar\" — bentuknya sama kayak Bonus & THR.",
            "item": [
                {
                    "name": "Daftar Lembur (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes?branch_id=&period=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Lembur Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                "mine"
                            ]
                        },
                        "description": "Self-service."
                    },
                    "response": []
                },
                {
                    "name": "Preview Hitung Lembur",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/preview",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                "preview"
                            ]
                        },
                        "description": "Ngitung jam + upah tanpa disimpen. Default-nya self-service; admin/hrd/hrd_cabang/cabang bisa kasih `employee_id`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": null,\n    \"date\": \"2027-01-20\",\n    \"start_time\": \"18:00\",\n    \"end_time\": \"21:00\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Lembur",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Lembur"
                                }
                            ]
                        },
                        "description": "Pemilik selalu bisa liat punya sendiri; selain itu butuh hak kelola + scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Ajukan Lembur",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes"
                            ]
                        },
                        "description": "Default-nya self-service; admin/hrd/hrd_cabang/cabang bisa kasih `employee_id` buat ngajuin atas nama orang lain dalam scope-nya. Langsung mulai alur ApprovalEngine.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"date\": \"2027-01-20\",\n    \"start_time\": \"18:00\",\n    \"end_time\": \"21:00\",\n    \"note\": null,\n    \"employee_id\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Setujui Lembur",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/:id/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                ":id",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Lembur"
                                }
                            ]
                        },
                        "description": "Menyetujui pengajuan lembur."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Lembur",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Lembur"
                                }
                            ]
                        },
                        "description": "Menolak pengajuan lembur.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Tidak sesuai penugasan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Tandai Lembur Dibayar",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/overtimes/:id/mark-paid",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "overtimes",
                                ":id",
                                "mark-paid"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Lembur"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Bonus & THR",
            "description": "Gak lewat ApprovalEngine — cuma Pending → Dibayar, ngikutin alur bayarBonus() dari prototype aslinya.",
            "item": [
                {
                    "name": "Daftar Bonus",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/bonuses?branch_id=&type=&period=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "bonuses"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "type",
                                    "value": "",
                                    "description": "bonus_jabatan|bonus_proyek|insentif|lainnya",
                                    "disabled": true
                                },
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Generate THR (Massal)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/bonuses/generate-thr",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "bonuses",
                                "generate-thr"
                            ]
                        },
                        "description": "Generate THR massal buat semua karyawan yang eligible dalam scope, sekaligus buat satu periode.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-04\",\n    \"branch_id\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Generate Bonus Kinerja (Massal)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/bonuses/generate-kinerja",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "bonuses",
                                "generate-kinerja"
                            ]
                        },
                        "description": "`grades` itu map employee_id → grade huruf (A-E) yang nentuin besaran bonusnya, biasanya diambil dari matriks KPI.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"2027-01\",\n    \"branch_id\": null,\n    \"grades\": {\n        \"1\": \"A\",\n        \"2\": \"B\"\n    }\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Catat Bonus Manual",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/bonuses",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "bonuses"
                            ]
                        },
                        "description": "Bonus satuan buat satu karyawan, dicek scope cabangnya.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"type\": \"bonus_proyek\",\n    \"period\": \"2027-01\",\n    \"amount\": 500000,\n    \"note\": \"Bonus proyek X\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Tandai Bonus Dibayar",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/bonuses/:id/mark-paid",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "bonuses",
                                ":id",
                                "mark-paid"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Bonus"
                                }
                            ]
                        },
                        "description": "Menandai satu bonus sebagai sudah dibayar."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Jadwal Kerja",
            "description": "Batch jadwal kerja (header: cabang + divisi + periode) beserta grid penugasan shift harian per karyawan.",
            "item": [
                {
                    "name": "Daftar Batch Jadwal",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches?branch_id=&department_id=&status=&period_from=&period_to=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Filter cabang",
                                    "disabled": true
                                },
                                {
                                    "key": "department_id",
                                    "value": "",
                                    "description": "Filter divisi",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "period_from",
                                    "value": "",
                                    "description": "Dari tanggal",
                                    "disabled": true
                                },
                                {
                                    "key": "period_to",
                                    "value": "",
                                    "description": "Sampai tanggal",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua batch jadwal kerja."
                    },
                    "response": []
                },
                {
                    "name": "Buat Batch Jadwal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches"
                            ]
                        },
                        "description": "Bikin batch jadwal kerja baru.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Jadwal Januari 2027\",\n    \"branch_id\": 1,\n    \"department_id\": 1,\n    \"period_start\": \"2027-01-01\",\n    \"period_end\": \"2027-01-31\",\n    \"note\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Batch Jadwal",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Lihat detail satu batch jadwal."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Batch Jadwal",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Cuma name/period/note yang bisa diubah setelah dibuat — cabang/divisi udah dikunci.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Jadwal Januari 2027 (revisi)\",\n    \"period_start\": \"2027-01-01\",\n    \"period_end\": \"2027-01-31\",\n    \"note\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Batch Jadwal",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Menghapus satu batch jadwal."
                    },
                    "response": []
                },
                {
                    "name": "Grid Jadwal",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/grid",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "grid"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Grid lengkap karyawan × hari buat penugasan shift di batch ini."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Karyawan ke Jadwal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/employees",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "employees"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Karyawan yang udah kejadwal di tempat lain pada tanggal yang bentrok bakal otomatis dilewatin — response-nya ngelaporin berapa yang ditambah vs dilewatin.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_ids\": [\n        1,\n        2,\n        3\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Keluarkan Karyawan dari Jadwal",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/employees/:employeeId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "employees",
                                ":employeeId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                },
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Mengeluarkan satu karyawan dari batch jadwal."
                    },
                    "response": []
                },
                {
                    "name": "Isi Satu Sel Jadwal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/paint-cell",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "paint-cell"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Set penugasan shift satu karyawan/tanggal. `shift_id: null` artinya libur.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"date\": \"2027-01-05\",\n    \"shift_id\": 1\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Isi Jadwal Massal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/bulk-assign",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "bulk-assign"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Ngisi seluruh periode batch buat karyawan yang dipilih dengan satu shift, `off_days_of_week` jadi hari libur berulang. Tanggal yang karyawannya udah kejadwal di tempat lain otomatis dilewatin.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_ids\": [\n        1,\n        2\n    ],\n    \"shift_id\": 1,\n    \"off_days_of_week\": [\n        0,\n        6\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Publikasikan Jadwal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/publish",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "publish"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Bisa langsung ke \"Dipublikasikan\" atau mulai alur ApprovalEngine (\"Menunggu Approval\") tergantung konfigurasi."
                    },
                    "response": []
                },
                {
                    "name": "Batalkan Publikasi Jadwal",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/roster-batches/:id/unpublish",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "roster-batches",
                                ":id",
                                "unpublish"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Batch Jadwal"
                                }
                            ]
                        },
                        "description": "Mengembalikan jadwal yang udah dipublikasikan balik ke status Draft."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Arsip SOP & IOM",
            "description": "Khusus admin/hrd. Arsip dokumen perusahaan — SOP, IOM, SK, Sirkular, Peraturan.",
            "item": [
                {
                    "name": "Daftar Dokumen Arsip",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/archive-documents?category=&department_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "archive-documents"
                            ],
                            "query": [
                                {
                                    "key": "category",
                                    "value": "",
                                    "description": "SOP|IOM|SK|Sirkular|Peraturan",
                                    "disabled": true
                                },
                                {
                                    "key": "department_id",
                                    "value": "",
                                    "description": "Filter divisi",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Aktif|Revisi|Tidak Berlaku",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua dokumen arsip."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Dokumen Arsip",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/archive-documents",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "archive-documents"
                            ]
                        },
                        "description": "Upload file-nya opsional pas create.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "document_number",
                                    "type": "text",
                                    "value": "SOP-001"
                                },
                                {
                                    "key": "title",
                                    "type": "text",
                                    "value": "SOP Penerimaan Karyawan"
                                },
                                {
                                    "key": "category",
                                    "type": "text",
                                    "value": "SOP"
                                },
                                {
                                    "key": "department_id",
                                    "type": "text",
                                    "value": "1"
                                },
                                {
                                    "key": "issued_at",
                                    "type": "text",
                                    "value": "2027-01-01"
                                },
                                {
                                    "key": "revision",
                                    "type": "text",
                                    "value": "0"
                                },
                                {
                                    "key": "status",
                                    "type": "text",
                                    "value": "Aktif"
                                },
                                {
                                    "key": "description",
                                    "type": "text",
                                    "value": ""
                                },
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Dokumen Arsip",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/archive-documents/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "archive-documents",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dokumen"
                                }
                            ]
                        },
                        "description": "Lihat detail satu dokumen arsip."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Dokumen Arsip",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/archive-documents/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "archive-documents",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dokumen"
                                }
                            ]
                        },
                        "description": "Update-nya pake POST (bukan PUT) karena nerima upload ulang file — field-nya sama kayak Create.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "document_number",
                                    "type": "text",
                                    "value": "SOP-001"
                                },
                                {
                                    "key": "title",
                                    "type": "text",
                                    "value": "SOP Penerimaan Karyawan (revisi)"
                                },
                                {
                                    "key": "category",
                                    "type": "text",
                                    "value": "SOP"
                                },
                                {
                                    "key": "department_id",
                                    "type": "text",
                                    "value": "1"
                                },
                                {
                                    "key": "issued_at",
                                    "type": "text",
                                    "value": "2027-01-01"
                                },
                                {
                                    "key": "revision",
                                    "type": "text",
                                    "value": "1"
                                },
                                {
                                    "key": "status",
                                    "type": "text",
                                    "value": "Revisi"
                                },
                                {
                                    "key": "description",
                                    "type": "text",
                                    "value": ""
                                },
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Dokumen Arsip",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/archive-documents/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "archive-documents",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Dokumen"
                                }
                            ]
                        },
                        "description": "Menghapus satu dokumen arsip."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Kalender SDM",
            "description": "Ulang tahun karyawan + cermin read-only Hari Libur Nasional buat satu bulan, di-scope per role.",
            "item": [
                {
                    "name": "Kalender Bulanan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/calendar?month=&year=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "calendar"
                            ],
                            "query": [
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "1-12, default bulan sekarang",
                                    "disabled": true
                                },
                                {
                                    "key": "year",
                                    "value": "",
                                    "description": "default tahun sekarang",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Ambil data kalender buat satu bulan tertentu."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Cabang / Outlet",
            "description": "Snapshot operasional per cabang — beda sama CRUD `/master/branches` yang dipake buat edit data master cabang.",
            "item": [
                {
                    "name": "Daftar Cabang (Dashboard)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/branch-dashboard?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "branch-dashboard"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Scope cabang buat akun non-HO."
                    },
                    "response": []
                },
                {
                    "name": "Detail Dashboard Cabang",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/branch-dashboard/:id?month=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "branch-dashboard",
                                ":id"
                            ],
                            "query": [
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                }
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Cabang"
                                }
                            ]
                        },
                        "description": "Dicek scope cabangnya."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Log Audit",
            "description": "Khusus admin/hrd. Setiap write yang ngubah data di semua modul kecatat di sini (action, table, id record, diff sebelum/sesudah, siapa yang ngelakuin).",
            "item": [
                {
                    "name": "Daftar Log Audit",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/audit-logs?table=&action=&user_id=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "audit-logs"
                            ],
                            "query": [
                                {
                                    "key": "table",
                                    "value": "",
                                    "description": "Filter berdasarkan nama tabel",
                                    "disabled": true
                                },
                                {
                                    "key": "action",
                                    "value": "",
                                    "description": "created|updated|deleted",
                                    "disabled": true
                                },
                                {
                                    "key": "user_id",
                                    "value": "",
                                    "description": "Filter berdasarkan user yang ngelakuin",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua log audit, bisa difilter."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Pengguna & Akses Menu",
            "description": "Khusus admin/hrd. CRUD akun login, ganti role, dan override akses menu per-user di atas default role-nya.",
            "item": [
                {
                    "name": "Daftar Pengguna",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users?search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users"
                            ],
                            "query": [
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua akun pengguna."
                    },
                    "response": []
                },
                {
                    "name": "Opsi Form Pengguna",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/form-options",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                "form-options"
                            ]
                        },
                        "description": "Karyawan yang belom punya akun login + daftar role yang aktif — dipake buat isi form \"Tambah Pengguna\"."
                    },
                    "response": []
                },
                {
                    "name": "Buat Akun Pengguna",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users"
                            ]
                        },
                        "description": "`employee_id`-nya harus salah satu dari karyawan yang dibalikin Opsi Form (artinya belom kelink ke akun manapun).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 5,\n    \"username\": \"newuser\",\n    \"email\": \"newuser@example.com\",\n    \"password\": \"password123\",\n    \"role_id\": 5\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ubah Role Pengguna",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/role",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "role"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengguna"
                                }
                            ]
                        },
                        "description": "Mengganti role satu akun pengguna.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"role_id\": 3\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Aktif/Nonaktifkan Pengguna",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/toggle-active",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "toggle-active"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengguna"
                                }
                            ]
                        },
                        "description": "Nonaktifin akun langsung motong aksesnya saat itu juga — token bearer yang lagi kepake langsung berhenti jalan, bukan cuma nge-block login berikutnya."
                    },
                    "response": []
                },
                {
                    "name": "Reset Password Pengguna",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/reset-password",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "reset-password"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengguna"
                                }
                            ]
                        },
                        "description": "Balikin password baru dalam bentuk plaintext, cuma sekali di response ini — frontend-nya wajib nampilin sekali doang (one-time reveal), jangan di-fetch ulang."
                    },
                    "response": []
                },
                {
                    "name": "Lihat Akses Menu",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/menu-access",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "menu-access"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengguna"
                                }
                            ]
                        },
                        "description": "Tree menu yang bisa diedit buat user ini — tiap item nunjukin apakah dia granted dari default role atau dari override khusus per-user."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Akses Menu",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/users/:id/menu-access",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "users",
                                ":id",
                                "menu-access"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengguna"
                                }
                            ]
                        },
                        "description": "Gak bisa nargetin akun sendiri (`id` == id user si pemanggil ditolak). `is_granted: null` ngebalikin override ke default role-nya lagi.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"changes\": [\n        {\n            \"menu_id\": 12,\n            \"is_granted\": true\n        },\n        {\n            \"menu_id\": 13,\n            \"is_granted\": null\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Kelola Menu",
            "description": "CRUD buat tabel `menus` itu sendiri (struktur sidebar) + default akses per-role tiap item menu — beda sama override satu user di folder atas.",
            "item": [
                {
                    "name": "Daftar Menu",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management"
                            ]
                        },
                        "description": "List semua menu."
                    },
                    "response": []
                },
                {
                    "name": "Opsi Form Menu",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/options?exclude_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                "options"
                            ],
                            "query": [
                                {
                                    "key": "exclude_id",
                                    "value": "",
                                    "description": "Kecualikan menu ini (pas lagi edit, biar gak jadi induk dari dirinya sendiri)",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Kandidat menu induk yang valid (cuma grup top-level) buat form tambah/edit."
                    },
                    "response": []
                },
                {
                    "name": "Detail Menu",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Menu"
                                }
                            ]
                        },
                        "description": "Lihat detail satu menu."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Menu",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management"
                            ]
                        },
                        "description": "`role_ids` nentuin role mana aja yang default dapet menu ini.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"label\": \"Menu Baru\",\n    \"code\": \"menu-baru\",\n    \"icon\": \"fa-star\",\n    \"route\": \"menu-baru\",\n    \"parent_id\": null,\n    \"sequence\": 10,\n    \"is_active\": true,\n    \"role_ids\": [\n        1,\n        2\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ubah Menu",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Menu"
                                }
                            ]
                        },
                        "description": "Kalo ini menu `pengaturan`, update-nya ditolak kalo bakal bikin menu itu jadi gak bisa diakses sama role manapun — soalnya ini satu-satunya jalan balik ke halaman kelola menu itu sendiri.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"label\": \"Menu Baru\",\n    \"code\": \"menu-baru\",\n    \"icon\": \"fa-star\",\n    \"route\": \"menu-baru\",\n    \"parent_id\": null,\n    \"sequence\": 10,\n    \"is_active\": true,\n    \"role_ids\": [\n        1,\n        2\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Menu",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Menu"
                                }
                            ]
                        },
                        "description": "Menghapus satu menu."
                    },
                    "response": []
                },
                {
                    "name": "Aktif/Nonaktifkan Menu",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/:id/toggle-active",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                ":id",
                                "toggle-active"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Menu"
                                }
                            ]
                        },
                        "description": "Mengaktifkan/menonaktifkan satu menu."
                    },
                    "response": []
                },
                {
                    "name": "Sinkronkan Akses Menu per Role",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/menu-management/roles/:roleId/grants",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "menu-management",
                                "roles",
                                ":roleId",
                                "grants"
                            ],
                            "variable": [
                                {
                                    "key": "roleId",
                                    "value": "",
                                    "description": "ID Role"
                                }
                            ]
                        },
                        "description": "Mengganti SELURUH set default akses menu role ini dengan daftar yang dikirim (bukan nambahin, tapi replace total).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"menu_ids\": [\n        1,\n        2,\n        3,\n        12\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Kelola Role",
            "description": "CRUD buat tabel `roles` itu sendiri. `code` dikunci buat 5 role bawaan (admin, hrd, hrd_cabang, cabang, employee) — cuma name/description/can_access_all_branches/aktif yang bisa diubah buat role-role itu.",
            "item": [
                {
                    "name": "Daftar Role",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management"
                            ]
                        },
                        "description": "List semua role."
                    },
                    "response": []
                },
                {
                    "name": "Detail Role",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Role"
                                }
                            ]
                        },
                        "description": "Lihat detail satu role."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Role",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management"
                            ]
                        },
                        "description": "Bikin role baru.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"supervisor\",\n    \"name\": \"Supervisor\",\n    \"description\": \"Supervisor cabang\",\n    \"can_access_all_branches\": false,\n    \"is_active\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ubah Role",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Role"
                                }
                            ]
                        },
                        "description": "Mengubah satu role.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"code\": \"supervisor\",\n    \"name\": \"Supervisor\",\n    \"description\": \"Supervisor cabang\",\n    \"can_access_all_branches\": false,\n    \"is_active\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Role",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Role"
                                }
                            ]
                        },
                        "description": "Menghapus satu role."
                    },
                    "response": []
                },
                {
                    "name": "Aktif/Nonaktifkan Role",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/role-management/:id/toggle-active",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "role-management",
                                ":id",
                                "toggle-active"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Role"
                                }
                            ]
                        },
                        "description": "Mengaktifkan/menonaktifkan satu role."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Absensi",
            "description": "Clock In/Out self-service (`/attendance/today`, `/mine`, `/clock-in`, `/clock-out` — selalu punya employee_id si pemanggil sendiri) plus endpoint admin buat rekap/statistik/input manual/approval.",
            "item": [
                {
                    "name": "Absensi Hari Ini",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/today",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "today"
                            ]
                        },
                        "description": "Self-service."
                    },
                    "response": []
                },
                {
                    "name": "Absensi Saya yang Perlu Approval",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "mine"
                            ]
                        },
                        "description": "Self-service — record punya sendiri yang di luar radius/lagi dikoreksi dan masih pending."
                    },
                    "response": []
                },
                {
                    "name": "Clock In",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/clock-in",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "clock-in"
                            ]
                        },
                        "description": "Self-service. Selfie wajib; geolocation `accuracy`/`is_mocked` opsional (ugapps ngirim ini di Android, PWA gak bisa). Header `X-Client-Source: apps` (dikirim ugapps) nyatet sumber absensinya \"apps\" bukan \"pwa\".",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "latitude",
                                    "type": "text",
                                    "value": "-6.200000"
                                },
                                {
                                    "key": "longitude",
                                    "type": "text",
                                    "value": "106.816666"
                                },
                                {
                                    "key": "selfie",
                                    "type": "file",
                                    "src": []
                                },
                                {
                                    "key": "accuracy",
                                    "type": "text",
                                    "value": "15"
                                },
                                {
                                    "key": "is_mocked",
                                    "type": "text",
                                    "value": "false"
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Clock Out",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/clock-out",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "clock-out"
                            ]
                        },
                        "description": "Self-service. Field-nya sama kayak Clock In.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "latitude",
                                    "type": "text",
                                    "value": "-6.200000"
                                },
                                {
                                    "key": "longitude",
                                    "type": "text",
                                    "value": "106.816666"
                                },
                                {
                                    "key": "selfie",
                                    "type": "file",
                                    "src": []
                                },
                                {
                                    "key": "accuracy",
                                    "type": "text",
                                    "value": "15"
                                },
                                {
                                    "key": "is_mocked",
                                    "type": "text",
                                    "value": "false"
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Daftar Absensi (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance?branch_id=&month=&employee_id=&status=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "employee_id",
                                    "value": "",
                                    "description": "Filter karyawan",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Scope cabang buat akun non-HO."
                    },
                    "response": []
                },
                {
                    "name": "Catat Absensi Manual",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance"
                            ]
                        },
                        "description": "\"Catat Absensi\" — admin nulis langsung tanpa lewat approval (beda sama clock-in/out self-service).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"employee_id\": 1,\n    \"date\": \"2027-01-20\",\n    \"clock_in_time\": \"08:00\",\n    \"clock_out_time\": \"17:00\",\n    \"status\": \"Hadir\",\n    \"keterangan\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Setujui Absensi",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/:id/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                ":id",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Absensi"
                                }
                            ]
                        },
                        "description": "Lewat ApprovalEngine (misal clock-in di luar radius yang ditandai buat direview)."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Absensi",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Absensi"
                                }
                            ]
                        },
                        "description": "Menolak record absensi."
                    },
                    "response": []
                },
                {
                    "name": "Rekap Absensi (Ringkasan)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/rekap?branch_id=&month=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "rekap"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Rollup bulanan per karyawan (jumlah hadir/telat/izin/sakit/cuti/alpha)."
                    },
                    "response": []
                },
                {
                    "name": "Detail Rekap Absensi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/rekap/:employeeId?month=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "rekap",
                                ":employeeId"
                            ],
                            "query": [
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                }
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Data harian satu karyawan buat modal \"Detail Harian\", plus info dinas berikutnya kalo ada."
                    },
                    "response": []
                },
                {
                    "name": "Statistik Absensi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/stats?branch_id=&month=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "stats"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Statistik absensi ringkas."
                    },
                    "response": []
                },
                {
                    "name": "Absensi Menunggu Approval",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance/approvals?branch_id=&month=&status=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance",
                                "approvals"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Record yang di luar radius, buat list gabungan di tab \"Koreksi & Approval\"."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Koreksi Absensi",
            "description": "Tab \"Koreksi & Approval\" buat admin/HRD — koreksi mundur ke record absensi yang udah tercatat, lewat ApprovalEngine.",
            "item": [
                {
                    "name": "Daftar Koreksi Absensi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance-corrections?branch_id=&month=&status=&search=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance-corrections"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "month",
                                    "value": "",
                                    "description": "YYYY-MM",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua koreksi absensi."
                    },
                    "response": []
                },
                {
                    "name": "Statistik Koreksi Absensi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance-corrections/stats?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance-corrections",
                                "stats"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Statistik koreksi absensi ringkas."
                    },
                    "response": []
                },
                {
                    "name": "Ajukan Koreksi",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance-corrections",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance-corrections"
                            ]
                        },
                        "description": "Minimal salah satu dari new_clock_in_at/new_clock_out_at/new_status harus diisi, plus alasannya. Langsung mulai alur ApprovalEngine.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"attendance_id\": 1,\n    \"new_clock_in_at\": \"2027-01-20 08:05:00\",\n    \"new_clock_out_at\": null,\n    \"new_status\": null,\n    \"reason\": \"Lupa clock in, sudah konfirmasi ke atasan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Setujui Koreksi",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance-corrections/:id/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance-corrections",
                                ":id",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Koreksi"
                                }
                            ]
                        },
                        "description": "Menyetujui pengajuan koreksi absensi."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Koreksi",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/attendance-corrections/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "attendance-corrections",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Koreksi"
                                }
                            ]
                        },
                        "description": "Menolak pengajuan koreksi absensi."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Cuti",
            "description": "Pengajuan cuti self-service (selalu employee_id punya si pemanggil sendiri) + endpoint laporan/approval buat admin, lewat ApprovalEngine.",
            "item": [
                {
                    "name": "Pengajuan Cuti Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                "mine"
                            ]
                        },
                        "description": "Self-service."
                    },
                    "response": []
                },
                {
                    "name": "Saldo Cuti Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/balance",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                "balance"
                            ]
                        },
                        "description": "Self-service — sisa kuota per jenis cuti, termasuk saldo \"Saldo PH\" kalo karyawannya punya."
                    },
                    "response": []
                },
                {
                    "name": "Ajukan Cuti",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests"
                            ]
                        },
                        "description": "Self-service. `leave_type_id` diambil dari resource data master `leave_types` (atau pseudo-type khusus Saldo PH kalo berlaku). Langsung mulai alur ApprovalEngine.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"leave_type_id\": 1,\n    \"start_date\": \"2027-02-10\",\n    \"end_date\": \"2027-02-12\",\n    \"reason\": \"Acara keluarga\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Batalkan Pengajuan Cuti",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengajuan Cuti"
                                }
                            ]
                        },
                        "description": "Self-service — cuma yang ngajuin sendiri yang bisa batalin pengajuannya yang masih pending."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Pengajuan Cuti (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests?branch_id=&status=&leave_type_id=&search=&per_page=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "",
                                    "description": "Filter status",
                                    "disabled": true
                                },
                                {
                                    "key": "leave_type_id",
                                    "value": "",
                                    "description": "Filter jenis cuti",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Scope cabang buat akun non-HO."
                    },
                    "response": []
                },
                {
                    "name": "Statistik Pengajuan Cuti",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/stats?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                "stats"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Statistik pengajuan cuti ringkas."
                    },
                    "response": []
                },
                {
                    "name": "Saldo Cuti Head Office",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/ho-balance?branch_id=&year=&search=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                "ho-balance"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "year",
                                    "value": "",
                                    "description": "default tahun sekarang",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Tab \"Saldo Cuti (Head Office)\" — kuota/terpakai/sisa Cuti Tahunan se-perusahaan buat karyawan non-Operasional."
                    },
                    "response": []
                },
                {
                    "name": "Saldo Cuti Karyawan (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/balance/:employeeId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                "balance",
                                ":employeeId"
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Versi admin dari \"Saldo Cuti Saya\" — buat karyawan manapun, dicek scope cabangnya."
                    },
                    "response": []
                },
                {
                    "name": "Setujui Cuti",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/:id/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                ":id",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengajuan Cuti"
                                }
                            ]
                        },
                        "description": "Menyetujui pengajuan cuti."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Cuti",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/leave-requests/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "leave-requests",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Pengajuan Cuti"
                                }
                            ]
                        },
                        "description": "Menolak pengajuan cuti.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Kuota cuti tidak mencukupi\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Saldo PH",
            "description": "Kredit hari libur pengganti — didapet dari kerja pas hari libur nasional/hari libur biasa, dipake sebagai hari cuti instan (gak perlu approval). `mine`/`mine/use` self-service; sisanya admin/hrd/hrd_cabang, scope cabang.",
            "item": [
                {
                    "name": "Ringkasan Saldo PH Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits/mine",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits",
                                "mine"
                            ]
                        },
                        "description": "Self-service. Dipake buat kartu \"Saldo PH\" di halaman Profil."
                    },
                    "response": []
                },
                {
                    "name": "Pakai Saldo PH Saya",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits/mine/use",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits",
                                "mine",
                                "use"
                            ]
                        },
                        "description": "Self-service, instan/gak perlu approval — langsung nulis absensi hari itu juga. Cuma muncul sebagai opsi kalo karyawannya punya saldo aktif.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"date\": \"2027-01-25\",\n    \"reason\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Daftar Saldo PH (Admin)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits?branch_id=&search=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List saldo PH semua karyawan."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Saldo PH Manual",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits/:employeeId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits",
                                ":employeeId"
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Scope cabang.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"date\": \"2027-01-01\",\n    \"reason\": \"Lembur hari libur nasional\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Pakai Saldo PH (Admin)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits/:employeeId/use",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits",
                                ":employeeId",
                                "use"
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Scope cabang."
                    },
                    "response": []
                },
                {
                    "name": "Riwayat Saldo PH",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/ph-credits/:employeeId/history",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "ph-credits",
                                ":employeeId",
                                "history"
                            ],
                            "variable": [
                                {
                                    "key": "employeeId",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Scope cabang."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Struktur Organisasi",
            "description": "Struktur garis pelaporan — siapa aja anggota satu cabang, dan siapa atasan langsung tiap karyawan.",
            "item": [
                {
                    "name": "Anggota Cabang",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/organization/branches/:branchId/members",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "organization",
                                "branches",
                                ":branchId",
                                "members"
                            ],
                            "variable": [
                                {
                                    "key": "branchId",
                                    "value": "",
                                    "description": "ID Cabang"
                                }
                            ]
                        },
                        "description": "Dicek scope cabangnya."
                    },
                    "response": []
                },
                {
                    "name": "Atur Atasan Karyawan",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/organization/employees/:id/supervisor",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "organization",
                                "employees",
                                ":id",
                                "supervisor"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Khusus admin/hrd/hrd_cabang, scope cabang.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"supervisor_id\": 3\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Alur Approval (Konfigurasi)",
            "description": "Khusus admin/hrd. Ngatur posisi apa aja, dan urutannya gimana, yang approve pengajuan dari satu divisi (cuti, kasbon, lembur, dll).",
            "item": [
                {
                    "name": "Daftar Alur Approval",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/approval-workflows",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "approval-workflows"
                            ]
                        },
                        "description": "Balikin konfigurasi per divisi + alur default fallback-nya."
                    },
                    "response": []
                },
                {
                    "name": "Simpan Alur Approval Divisi",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/approval-workflows/:departmentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "approval-workflows",
                                ":departmentId"
                            ],
                            "variable": [
                                {
                                    "key": "departmentId",
                                    "value": "",
                                    "description": "ID Divisi"
                                }
                            ]
                        },
                        "description": "Mengganti rantai approval divisi ini — list ID posisi yang berurutan (array kosong balik ke alur default).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"position_ids\": [\n        4,\n        2\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Kotak Masuk Approval",
            "description": "Semua yang lagi nunggu aksi approval dari user yang login, dari semua jenis pengajuan (cuti, kasbon, lembur, koreksi absensi, publish jadwal, dll) dalam satu kotak masuk terpadu.",
            "item": [
                {
                    "name": "Approval Menunggu Saya",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/approval-inbox",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "approval-inbox"
                            ]
                        },
                        "description": "List semua pengajuan yang lagi nunggu approval si pemanggil."
                    },
                    "response": []
                },
                {
                    "name": "Setujui (Umum)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/approval-inbox/:approvalRequestId/approve",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "approval-inbox",
                                ":approvalRequestId",
                                "approve"
                            ],
                            "variable": [
                                {
                                    "key": "approvalRequestId",
                                    "value": "",
                                    "description": "ID Approval Request"
                                }
                            ]
                        },
                        "description": "Berlaku buat jenis pengajuan apa aja — engine-nya yang nentuin cara prosesnya berdasarkan jenis si pengajuan."
                    },
                    "response": []
                },
                {
                    "name": "Tolak (Umum)",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/approval-inbox/:approvalRequestId/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "approval-inbox",
                                ":approvalRequestId",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "approvalRequestId",
                                    "value": "",
                                    "description": "ID Approval Request"
                                }
                            ]
                        },
                        "description": "Menolak satu pengajuan apa pun jenisnya.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Tidak sesuai kebijakan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Rekrutmen & Kandidat",
            "description": "Khusus admin/hrd/hrd_cabang (data rekrutmen dianggap data pribadi/PII). job_postings/recruitment_stages sendiri ada di Data Master — ini adalah pipeline kandidatnya di atas itu.",
            "item": [
                {
                    "name": "Ringkasan Lowongan",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/recruitment/job-postings-summary?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recruitment",
                                "job-postings-summary"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Lowongan yang masih kebuka beserta jumlah pelamar per tahap."
                    },
                    "response": []
                },
                {
                    "name": "Dashboard Rekrutmen",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/recruitment/dashboard?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recruitment",
                                "dashboard"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Statistik funnel/konversi di sepanjang pipeline rekrutmen."
                    },
                    "response": []
                },
                {
                    "name": "Daftar Kandidat",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates?search=&per_page=&job_posting_id=&stage_id=&source=&exclude_hired=&branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates"
                            ],
                            "query": [
                                {
                                    "key": "search",
                                    "value": "",
                                    "description": "Pencarian bebas",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "",
                                    "description": "Jumlah data per halaman",
                                    "disabled": true
                                },
                                {
                                    "key": "job_posting_id",
                                    "value": "",
                                    "description": "Filter lowongan",
                                    "disabled": true
                                },
                                {
                                    "key": "stage_id",
                                    "value": "",
                                    "description": "Filter tahap",
                                    "disabled": true
                                },
                                {
                                    "key": "source",
                                    "value": "",
                                    "description": "JobStreet|LinkedIn|Indeed|Instagram|Website|Referral|Walk-in|Lainnya",
                                    "disabled": true
                                },
                                {
                                    "key": "exclude_hired",
                                    "value": "",
                                    "description": "true buat nyembunyiin kandidat yang udah diterima",
                                    "disabled": true
                                },
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua kandidat."
                    },
                    "response": []
                },
                {
                    "name": "Tambah Kandidat",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates"
                            ]
                        },
                        "description": "Dicek scope cabangnya terhadap cabang lowongan yang dituju.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"job_posting_id\": 1,\n    \"name\": \"Contoh Pelamar\",\n    \"gender\": \"L\",\n    \"email\": \"pelamar@example.com\",\n    \"phone\": \"081234567890\",\n    \"birth_date\": \"1998-05-10\",\n    \"domicile\": \"Jakarta\",\n    \"source\": \"LinkedIn\",\n    \"applied_at\": \"2027-01-10\",\n    \"education\": \"S1\",\n    \"experience_years\": 2,\n    \"expected_salary\": 6000000,\n    \"skills\": \"Excel, komunikasi\",\n    \"initial_note\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Detail Kandidat",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Dicek scope cabangnya."
                    },
                    "response": []
                },
                {
                    "name": "Ubah Kandidat",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Field-nya sama kayak Create.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"job_posting_id\": 1,\n    \"name\": \"Contoh Pelamar\",\n    \"gender\": \"L\",\n    \"email\": \"pelamar@example.com\",\n    \"phone\": \"081234567890\",\n    \"birth_date\": \"1998-05-10\",\n    \"domicile\": \"Jakarta\",\n    \"source\": \"LinkedIn\",\n    \"applied_at\": \"2027-01-10\",\n    \"education\": \"S1\",\n    \"experience_years\": 2,\n    \"expected_salary\": 6000000,\n    \"skills\": \"Excel, komunikasi\",\n    \"initial_note\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Kandidat",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Menghapus satu kandidat."
                    },
                    "response": []
                },
                {
                    "name": "Riwayat Rekrutmen Kandidat (per Karyawan)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/employees/:id/recruitment",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "employees",
                                ":id",
                                "recruitment"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Karyawan"
                                }
                            ]
                        },
                        "description": "Route duplikat dari yang ada di folder Data Karyawan — dimasukin lagi di sini karena konsepnya emang bagian dari pipeline rekrutmen. Balikin data null (bukan 404) kalo karyawannya gak direkrut lewat modul rekrutmen."
                    },
                    "response": []
                },
                {
                    "name": "Upload Dokumen Kandidat",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/documents",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "documents"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Upload satu dokumen kandidat.",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "category",
                                    "type": "text",
                                    "value": "CV"
                                },
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Hapus Dokumen Kandidat",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/documents/:documentId",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "documents",
                                ":documentId"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                },
                                {
                                    "key": "documentId",
                                    "value": "",
                                    "description": "ID Baris Dokumen"
                                }
                            ]
                        },
                        "description": "Menghapus satu dokumen kandidat."
                    },
                    "response": []
                },
                {
                    "name": "Simpan Penilaian (Psikotes/Interview)",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/assessment",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "assessment"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Skor tes (0-100) + rating interview HR (masing-masing 1-5) + rekomendasi.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"test_psikotes\": 80,\n    \"test_teknis\": 75,\n    \"test_bahasa\": 85,\n    \"test_date\": \"2027-01-15\",\n    \"test_examiner\": \"Budi\",\n    \"test_note\": null,\n    \"hr_komunikasi\": 4,\n    \"hr_sikap\": 4,\n    \"hr_motivasi\": 5,\n    \"hr_kejujuran\": 5,\n    \"hr_penampilan\": 4,\n    \"hr_date\": \"2027-01-16\",\n    \"hr_interviewer\": \"Siti\",\n    \"hr_note\": null,\n    \"hr_recommendation\": \"Direkomendasikan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Simpan Detail Kontrak",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/contract",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "contract"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Menyimpan data kontrak kandidat.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"type\": \"PKWT (Kontrak)\",\n    \"number\": \"PKWT-001\",\n    \"start_date\": \"2027-02-01\",\n    \"end_date\": \"2028-01-31\",\n    \"probation_months\": 3,\n    \"base_salary\": 5000000,\n    \"meal_allowance\": 500000,\n    \"transport_allowance\": 300000,\n    \"branch_id\": 1,\n    \"position_id\": 3,\n    \"department_id\": 1,\n    \"note\": null,\n    \"status\": \"Draft\",\n    \"signed_at\": null\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Simpan Checklist Onboarding",
                    "request": {
                        "method": "PUT",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/onboarding",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "onboarding"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Checklist boolean buat tugas onboarding standar (kumpulin dokumen, kontrak, rekening bank, BPJS, ID card, seragam, briefing SOP, tools, penunjukan buddy, training).",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"start_date\": \"2027-02-01\",\n    \"buddy\": \"Andi\",\n    \"note\": null,\n    \"task_dok\": false,\n    \"task_kontrak\": false,\n    \"task_rek\": false,\n    \"task_bpjs\": false,\n    \"task_nik\": false,\n    \"task_seragam\": false,\n    \"task_sop\": false,\n    \"task_tools\": false,\n    \"task_buddy\": false,\n    \"task_training\": false\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Maju ke Tahap Berikutnya",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/advance",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "advance"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Majuin kandidat satu recruitment_stage ke depan. `reactivate: true` buat ngembaliin kandidat yang sebelumnya ditolak, balik ke alur lagi.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reactivate\": false\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Kembali ke Tahap Sebelumnya",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/revert",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "revert"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Mundurin kandidat ke tahap sebelumnya."
                    },
                    "response": []
                },
                {
                    "name": "Tolak Kandidat",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/reject",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "reject"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Menolak satu kandidat.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Tidak sesuai kualifikasi\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Tambah Catatan",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/candidates/:id/notes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "candidates",
                                ":id",
                                "notes"
                            ],
                            "variable": [
                                {
                                    "key": "id",
                                    "value": "",
                                    "description": "ID Kandidat"
                                }
                            ]
                        },
                        "description": "Catatan bebas di linimasa record kandidat.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"note\": \"Follow up minggu depan\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Dashboard",
            "description": "Kumpulan widget halaman utama setelah login — nyesuain role (kartu yang beda-beda buat admin/hrd vs hrd_cabang vs employee).",
            "item": [
                {
                    "name": "Dashboard",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/dashboard?branch_id=&period=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "dashboard"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                },
                                {
                                    "key": "period",
                                    "value": "",
                                    "description": "YYYY-MM, default bulan sekarang",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Ambil data dashboard buat role yang login."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Notifikasi",
            "description": "Pusat notifikasi di topbar. Notifikasi dihitung langsung tiap kali dibaca (approval yang pending, alert, dll) — bukan baris yang disimpen permanen, cuma status \"udah dibaca\"-nya aja (`notification_reads`, pake key string yang stabil) yang beneran disimpen.",
            "item": [
                {
                    "name": "Daftar Notifikasi",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/notifications?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "notifications"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "List semua notifikasi buat user yang login."
                    },
                    "response": []
                },
                {
                    "name": "Tandai Satu Dibaca",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/notifications/read",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "notifications",
                                "read"
                            ]
                        },
                        "description": "Menandai satu notifikasi sebagai sudah dibaca.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"key\": \"leave_request:123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": []
                },
                {
                    "name": "Tandai Semua Dibaca",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/notifications/read-all?branch_id=",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "notifications",
                                "read-all"
                            ],
                            "query": [
                                {
                                    "key": "branch_id",
                                    "value": "",
                                    "description": "Khusus HO",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Menandai semua notifikasi sebagai sudah dibaca."
                    },
                    "response": []
                }
            ]
        }
    ]
}